{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 作业4. 下载和处理泰坦尼克数据集"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在https://www.kaggle.com/c/titanic Kaggle网站上下载和处理泰坦尼克数据集<br>\n",
    "放在.../hw4_datasets/titanic下"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import os, re\n",
    "import matplotlib.pyplot as plt\n",
    "from pandas.plotting import scatter_matrix\n",
    "from sklearn.preprocessing import Imputer\n",
    "from sklearn.base import BaseEstimator, TransformerMixin\n",
    "from sklearn.preprocessing import LabelBinarizer, MultiLabelBinarizer\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.pipeline import FeatureUnion\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.svm import SVC, LinearSVC\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.linear_model import Perceptron\n",
    "%matplotlib inline\n",
    "\n",
    "path = os.getcwd()\n",
    "data_path = os.path.join(path,'hw4_datasets','titanic')\n",
    "train_csv_path = os.path.join(data_path, 'train.csv')\n",
    "\n",
    "def load_csv(datapath,csv_name):\n",
    "    train_csv_path = os.path.join(data_path, csv_name)\n",
    "    return pd.read_csv(train_csv_path)\n",
    "\n",
    "class DataFrameSelector(BaseEstimator, TransformerMixin):\n",
    "    def __init__(self, attribute_names):\n",
    "        self.attribute_names = attribute_names\n",
    "    def fit(self, x, y=None):\n",
    "        return self\n",
    "    def transform(self, x):\n",
    "        return x[self.attribute_names].values\n",
    "    \n",
    "class MyMultiLabelBinarizer(TransformerMixin):\n",
    "    def __init__(self, *args, **kwargs):\n",
    "        self.encoder = MultiLabelBinarizer(*args, **kwargs)\n",
    "    def fit(self, x, y=0):\n",
    "        self.encoder.fit(x)\n",
    "        return self\n",
    "    def transform(self, x, y=0):\n",
    "        MyMultiLabelBinarizer_cols = self.encoder.classes_\n",
    "        print(MyMultiLabelBinarizer_cols)\n",
    "        return self.encoder.transform(x)\n",
    "    \n",
    "class MyLabelBinarizer(TransformerMixin):\n",
    "    def __init__(self, *args, **kwargs):\n",
    "        self.encoder = LabelBinarizer(*args, **kwargs)\n",
    "    def fit(self, x, y=0):\n",
    "        self.encoder.fit(x)\n",
    "        return self\n",
    "    def transform(self, x, y=0):\n",
    "        MyLabelBinarizer_cols = self.encoder.classes_\n",
    "        print(MyLabelBinarizer_cols)\n",
    "        return self.encoder.transform(x)\n",
    "    \n",
    "def submit_csv(csv_name, y_pred):\n",
    "    submission = pd.DataFrame({\n",
    "            \"PassengerId\": test_data[\"PassengerId\"],\n",
    "            \"Survived\": y_pred\n",
    "        })\n",
    "    submission.to_csv('./'+csv_name, index=False)\n",
    "    \n",
    "def general_algorithm(algo,X_train, y_train, X_test, freq=5, verbose=3):\n",
    "    algo.fit(X_train, y_train)\n",
    "    algo_score = cross_val_score(algo, X_train, y_train, cv=freq, scoring='accuracy')\n",
    "    algo_name = re.sub('\\((.+\\n.+)+\\)','',str(algo))\n",
    "    algo_score = round(algo_score.mean()*100,2)\n",
    "    print('{0}:{1}%'.format(algo_name, algo_score))\n",
    "    y_pred = algo.predict(X_test)\n",
    "    submit_csv(algo_name + '_result.csv', y_pred)\n",
    "    print(algo_name + '_result.csv generated!')\n",
    "    return algo_name, algo_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data = load_csv(data_path, 'train.csv')  # 载入训练数据\n",
    "train_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>892</td>\n",
       "      <td>3</td>\n",
       "      <td>Kelly, Mr. James</td>\n",
       "      <td>male</td>\n",
       "      <td>34.5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>330911</td>\n",
       "      <td>7.8292</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>893</td>\n",
       "      <td>3</td>\n",
       "      <td>Wilkes, Mrs. James (Ellen Needs)</td>\n",
       "      <td>female</td>\n",
       "      <td>47.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>363272</td>\n",
       "      <td>7.0000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>894</td>\n",
       "      <td>2</td>\n",
       "      <td>Myles, Mr. Thomas Francis</td>\n",
       "      <td>male</td>\n",
       "      <td>62.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>240276</td>\n",
       "      <td>9.6875</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>895</td>\n",
       "      <td>3</td>\n",
       "      <td>Wirz, Mr. Albert</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>315154</td>\n",
       "      <td>8.6625</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>896</td>\n",
       "      <td>3</td>\n",
       "      <td>Hirvonen, Mrs. Alexander (Helga E Lindqvist)</td>\n",
       "      <td>female</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3101298</td>\n",
       "      <td>12.2875</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Pclass                                          Name     Sex  \\\n",
       "0          892       3                              Kelly, Mr. James    male   \n",
       "1          893       3              Wilkes, Mrs. James (Ellen Needs)  female   \n",
       "2          894       2                     Myles, Mr. Thomas Francis    male   \n",
       "3          895       3                              Wirz, Mr. Albert    male   \n",
       "4          896       3  Hirvonen, Mrs. Alexander (Helga E Lindqvist)  female   \n",
       "\n",
       "    Age  SibSp  Parch   Ticket     Fare Cabin Embarked  \n",
       "0  34.5      0      0   330911   7.8292   NaN        Q  \n",
       "1  47.0      1      0   363272   7.0000   NaN        S  \n",
       "2  62.0      0      0   240276   9.6875   NaN        Q  \n",
       "3  27.0      0      0   315154   8.6625   NaN        S  \n",
       "4  22.0      1      1  3101298  12.2875   NaN        S  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_data = load_csv(data_path, 'test.csv')  # 载入测试数据\n",
    "test_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          714 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        204 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n"
     ]
    }
   ],
   "source": [
    "train_data.info()   # 查看训练集构成"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>714.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.383838</td>\n",
       "      <td>2.308642</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>32.204208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>257.353842</td>\n",
       "      <td>0.486592</td>\n",
       "      <td>0.836071</td>\n",
       "      <td>14.526497</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>49.693429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>223.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.125000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.910400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>668.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       PassengerId    Survived      Pclass         Age       SibSp  \\\n",
       "count   891.000000  891.000000  891.000000  714.000000  891.000000   \n",
       "mean    446.000000    0.383838    2.308642   29.699118    0.523008   \n",
       "std     257.353842    0.486592    0.836071   14.526497    1.102743   \n",
       "min       1.000000    0.000000    1.000000    0.420000    0.000000   \n",
       "25%     223.500000    0.000000    2.000000   20.125000    0.000000   \n",
       "50%     446.000000    0.000000    3.000000   28.000000    0.000000   \n",
       "75%     668.500000    1.000000    3.000000   38.000000    1.000000   \n",
       "max     891.000000    1.000000    3.000000   80.000000    8.000000   \n",
       "\n",
       "            Parch        Fare  \n",
       "count  891.000000  891.000000  \n",
       "mean     0.381594   32.204208  \n",
       "std      0.806057   49.693429  \n",
       "min      0.000000    0.000000  \n",
       "25%      0.000000    7.910400  \n",
       "50%      0.000000   14.454200  \n",
       "75%      0.000000   31.000000  \n",
       "max      6.000000  512.329200  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.describe()     # 查看训练集构成"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3    491\n",
      "1    216\n",
      "2    184\n",
      "Name: Pclass, dtype: int64\n",
      "******************************\n",
      "male      577\n",
      "female    314\n",
      "Name: Sex, dtype: int64\n",
      "******************************\n",
      "S    644\n",
      "C    168\n",
      "Q     77\n",
      "Name: Embarked, dtype: int64\n",
      "******************************\n"
     ]
    }
   ],
   "source": [
    "cat_list = ['Pclass', 'Sex', 'Embarked']\n",
    "for cat in cat_list:\n",
    "    print(train_data[cat].value_counts())\n",
    "    print('*'*30)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train_set_size:891\n",
      "test_set_size:418\n"
     ]
    }
   ],
   "source": [
    "print('train_set_size:{0}\\ntest_set_size:{1}'.format(len(train_data), len(test_data)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Moran, Mr. James</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>330877</td>\n",
       "      <td>8.4583</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Palsson, Master. Gosta Leonard</td>\n",
       "      <td>male</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>349909</td>\n",
       "      <td>21.0750</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass                            Name     Sex  \\\n",
       "0            1         0       3         Braund, Mr. Owen Harris    male   \n",
       "2            3         1       3          Heikkinen, Miss. Laina  female   \n",
       "4            5         0       3        Allen, Mr. William Henry    male   \n",
       "5            6         0       3                Moran, Mr. James    male   \n",
       "7            8         0       3  Palsson, Master. Gosta Leonard    male   \n",
       "\n",
       "    Age  SibSp  Parch            Ticket     Fare Cabin Embarked  \n",
       "0  22.0      1      0         A/5 21171   7.2500   NaN        S  \n",
       "2  26.0      0      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "4  35.0      0      0            373450   8.0500   NaN        S  \n",
       "5   NaN      0      0            330877   8.4583   NaN        Q  \n",
       "7   2.0      3      1            349909  21.0750   NaN        S  "
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "problem_data = train_data[train_data.isnull().any(axis=1)]\n",
    "problem_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>708.000000</td>\n",
       "      <td>708.000000</td>\n",
       "      <td>708.000000</td>\n",
       "      <td>531.000000</td>\n",
       "      <td>708.000000</td>\n",
       "      <td>708.000000</td>\n",
       "      <td>708.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>443.579096</td>\n",
       "      <td>0.309322</td>\n",
       "      <td>2.597458</td>\n",
       "      <td>27.639831</td>\n",
       "      <td>0.538136</td>\n",
       "      <td>0.357345</td>\n",
       "      <td>20.190759</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>260.064812</td>\n",
       "      <td>0.462541</td>\n",
       "      <td>0.636330</td>\n",
       "      <td>13.537509</td>\n",
       "      <td>1.192842</td>\n",
       "      <td>0.817586</td>\n",
       "      <td>30.073450</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>213.750000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.879200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>441.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>11.187500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>667.250000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>24.150000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>74.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       PassengerId    Survived      Pclass         Age       SibSp  \\\n",
       "count   708.000000  708.000000  708.000000  531.000000  708.000000   \n",
       "mean    443.579096    0.309322    2.597458   27.639831    0.538136   \n",
       "std     260.064812    0.462541    0.636330   13.537509    1.192842   \n",
       "min       1.000000    0.000000    1.000000    0.420000    0.000000   \n",
       "25%     213.750000    0.000000    2.000000   19.000000    0.000000   \n",
       "50%     441.500000    0.000000    3.000000   26.000000    0.000000   \n",
       "75%     667.250000    1.000000    3.000000   35.000000    1.000000   \n",
       "max     891.000000    1.000000    3.000000   74.000000    8.000000   \n",
       "\n",
       "            Parch        Fare  \n",
       "count  708.000000  708.000000  \n",
       "mean     0.357345   20.190759  \n",
       "std      0.817586   30.073450  \n",
       "min      0.000000    0.000000  \n",
       "25%      0.000000    7.879200  \n",
       "50%      0.000000   11.187500  \n",
       "75%      0.000000   24.150000  \n",
       "max      6.000000  512.329200  "
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "problem_data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 708 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  708 non-null    int64  \n",
      " 1   Survived     708 non-null    int64  \n",
      " 2   Pclass       708 non-null    int64  \n",
      " 3   Name         708 non-null    object \n",
      " 4   Sex          708 non-null    object \n",
      " 5   Age          531 non-null    float64\n",
      " 6   SibSp        708 non-null    int64  \n",
      " 7   Parch        708 non-null    int64  \n",
      " 8   Ticket       708 non-null    object \n",
      " 9   Fare         708 non-null    float64\n",
      " 10  Cabin        21 non-null     object \n",
      " 11  Embarked     706 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 71.9+ KB\n"
     ]
    }
   ],
   "source": [
    "problem_data.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 我们知道‘Name’, 'Ticket', 'Cabin'对预测意义不大，Cabin也许有关系可是数据量少得太离谱， 我们把这几列都拿掉, 这些可以透过DataFrameSelector来完成， 我们先把没有Embarked数据的两行删除"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 889 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  889 non-null    int64  \n",
      " 1   Survived     889 non-null    int64  \n",
      " 2   Pclass       889 non-null    int64  \n",
      " 3   Name         889 non-null    object \n",
      " 4   Sex          889 non-null    object \n",
      " 5   Age          712 non-null    float64\n",
      " 6   SibSp        889 non-null    int64  \n",
      " 7   Parch        889 non-null    int64  \n",
      " 8   Ticket       889 non-null    object \n",
      " 9   Fare         889 non-null    float64\n",
      " 10  Cabin        202 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 90.3+ KB\n"
     ]
    }
   ],
   "source": [
    "train_data_drop_na = train_data.dropna(subset=['Embarked'])\n",
    "train_data_drop_na.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_attribs = ['Age', 'SibSp', 'Parch', 'Fare', 'Survived']\n",
    "num_attribs_test = ['Age', 'SibSp', 'Parch', 'Fare']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_pipeline = Pipeline(\n",
    "[\n",
    "    ('features selector', DataFrameSelector(num_attribs)),\n",
    "    ('imputer', Imputer(strategy='median'))\n",
    "])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_pipeline_test = Pipeline(\n",
    "[\n",
    "    ('features selector', DataFrameSelector(num_attribs_test)),\n",
    "    ('imputer', Imputer(strategy='median'))\n",
    "])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_attribs_multi = ['Sex', 'Embarked']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_pipeline_multi = Pipeline([\n",
    "        ('selector', DataFrameSelector(cat_attribs_multi)),               \n",
    "        ('MultiLabelBinarizer', MyMultiLabelBinarizer()),\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_attribs = ['Pclass']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "cat_pipeline = Pipeline([\n",
    "        ('selector', DataFrameSelector(cat_attribs)),               \n",
    "        ('MultiLabelBinarizer', MyLabelBinarizer()),\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[22.    ,  1.    ,  0.    ,  7.25  ,  0.    ],\n",
       "       [38.    ,  1.    ,  0.    , 71.2833,  1.    ],\n",
       "       [26.    ,  0.    ,  0.    ,  7.925 ,  1.    ],\n",
       "       ...,\n",
       "       [28.    ,  1.    ,  2.    , 23.45  ,  0.    ],\n",
       "       [26.    ,  0.    ,  0.    , 30.    ,  1.    ],\n",
       "       [32.    ,  0.    ,  0.    ,  7.75  ,  0.    ]])"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_pipeline.fit_transform(train_data_drop_na)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['C' 'Q' 'S' 'female' 'male']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 1, 0, 1],\n",
       "       [1, 0, 0, 1, 0],\n",
       "       [0, 0, 1, 1, 0],\n",
       "       ...,\n",
       "       [0, 0, 1, 1, 0],\n",
       "       [1, 0, 0, 0, 1],\n",
       "       [0, 1, 0, 0, 1]])"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cat_pipeline_multi.fit_transform(train_data_drop_na)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1 2 3]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 1],\n",
       "       [1, 0, 0],\n",
       "       [0, 0, 1],\n",
       "       ...,\n",
       "       [0, 0, 1],\n",
       "       [1, 0, 0],\n",
       "       [0, 0, 1]])"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cat_pipeline.fit_transform(train_data_drop_na)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "full_pipeline = FeatureUnion(\n",
    "transformer_list = [\n",
    "    ('num_pipeline',num_pipeline,),\n",
    "    ('cat_pipeline_multi', cat_pipeline_multi),\n",
    "    ('cat_pipeline', cat_pipeline)\n",
    "]\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "full_pipeline_test = FeatureUnion(\n",
    "transformer_list = [\n",
    "    ('num_pipeline',num_pipeline_test,),\n",
    "    ('cat_pipeline_multi', cat_pipeline_multi),\n",
    "    ('cat_pipeline', cat_pipeline)\n",
    "]\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['C' 'Q' 'S' 'female' 'male']\n",
      "[1 2 3]\n"
     ]
    }
   ],
   "source": [
    "X_train = full_pipeline.fit_transform(train_data_drop_na)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[22.    ,  1.    ,  0.    ,  7.25  ,  0.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [38.    ,  1.    ,  0.    , 71.2833,  1.    ,  1.    ,  0.    ,\n",
       "         0.    ,  1.    ,  0.    ,  1.    ,  0.    ,  0.    ],\n",
       "       [26.    ,  0.    ,  0.    ,  7.925 ,  1.    ,  0.    ,  0.    ,\n",
       "         1.    ,  1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [35.    ,  1.    ,  0.    , 53.1   ,  1.    ,  0.    ,  0.    ,\n",
       "         1.    ,  1.    ,  0.    ,  1.    ,  0.    ,  0.    ],\n",
       "       [35.    ,  0.    ,  0.    ,  8.05  ,  0.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [28.    ,  0.    ,  0.    ,  8.4583,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [54.    ,  0.    ,  0.    , 51.8625,  0.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  1.    ,  1.    ,  0.    ,  0.    ],\n",
       "       [ 2.    ,  3.    ,  1.    , 21.075 ,  0.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [27.    ,  0.    ,  2.    , 11.1333,  1.    ,  0.    ,  0.    ,\n",
       "         1.    ,  1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [14.    ,  1.    ,  0.    , 30.0708,  1.    ,  1.    ,  0.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ,  0.    ]])"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 418 entries, 0 to 417\n",
      "Data columns (total 11 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  418 non-null    int64  \n",
      " 1   Pclass       418 non-null    int64  \n",
      " 2   Name         418 non-null    object \n",
      " 3   Sex          418 non-null    object \n",
      " 4   Age          332 non-null    float64\n",
      " 5   SibSp        418 non-null    int64  \n",
      " 6   Parch        418 non-null    int64  \n",
      " 7   Ticket       418 non-null    object \n",
      " 8   Fare         417 non-null    float64\n",
      " 9   Cabin        91 non-null     object \n",
      " 10  Embarked     418 non-null    object \n",
      "dtypes: float64(2), int64(4), object(5)\n",
      "memory usage: 36.0+ KB\n"
     ]
    }
   ],
   "source": [
    "test_data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['C' 'Q' 'S' 'female' 'male']\n",
      "[1 2 3]\n"
     ]
    }
   ],
   "source": [
    "X_test = full_pipeline_test.fit_transform(test_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[34.5   ,  0.    ,  0.    ,  7.8292,  0.    ,  1.    ,  0.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [47.    ,  1.    ,  0.    ,  7.    ,  0.    ,  0.    ,  1.    ,\n",
       "         1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [62.    ,  0.    ,  0.    ,  9.6875,  0.    ,  1.    ,  0.    ,\n",
       "         0.    ,  1.    ,  0.    ,  1.    ,  0.    ],\n",
       "       [27.    ,  0.    ,  0.    ,  8.6625,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [22.    ,  1.    ,  1.    , 12.2875,  0.    ,  0.    ,  1.    ,\n",
       "         1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [14.    ,  0.    ,  0.    ,  9.225 ,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [30.    ,  0.    ,  0.    ,  7.6292,  0.    ,  1.    ,  0.    ,\n",
       "         1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [26.    ,  1.    ,  1.    , 29.    ,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  1.    ,  0.    ],\n",
       "       [18.    ,  0.    ,  0.    ,  7.2292,  1.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [21.    ,  2.    ,  0.    , 24.15  ,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ]])"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_test[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>22.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>38.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>26.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>35.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>35.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>884</th>\n",
       "      <td>27.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>885</th>\n",
       "      <td>19.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>28.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>23.4500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>26.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>32.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>889 rows × 13 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        0    1    2        3    4    5    6    7    8    9   10   11   12\n",
       "0    22.0  1.0  0.0   7.2500  0.0  0.0  0.0  1.0  0.0  1.0  0.0  0.0  1.0\n",
       "1    38.0  1.0  0.0  71.2833  1.0  1.0  0.0  0.0  1.0  0.0  1.0  0.0  0.0\n",
       "2    26.0  0.0  0.0   7.9250  1.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  1.0\n",
       "3    35.0  1.0  0.0  53.1000  1.0  0.0  0.0  1.0  1.0  0.0  1.0  0.0  0.0\n",
       "4    35.0  0.0  0.0   8.0500  0.0  0.0  0.0  1.0  0.0  1.0  0.0  0.0  1.0\n",
       "..    ...  ...  ...      ...  ...  ...  ...  ...  ...  ...  ...  ...  ...\n",
       "884  27.0  0.0  0.0  13.0000  0.0  0.0  0.0  1.0  0.0  1.0  0.0  1.0  0.0\n",
       "885  19.0  0.0  0.0  30.0000  1.0  0.0  0.0  1.0  1.0  0.0  1.0  0.0  0.0\n",
       "886  28.0  1.0  2.0  23.4500  0.0  0.0  0.0  1.0  1.0  0.0  0.0  0.0  1.0\n",
       "887  26.0  0.0  0.0  30.0000  1.0  1.0  0.0  0.0  0.0  1.0  1.0  0.0  0.0\n",
       "888  32.0  0.0  0.0   7.7500  0.0  0.0  1.0  0.0  0.0  1.0  0.0  0.0  1.0\n",
       "\n",
       "[889 rows x 13 columns]"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#pd.DataFrame(X_train, columns=train_data_drop_na.columns, index=train_data_drop_na.index)\n",
    "pd.DataFrame(X_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Age',\n",
       " 'SibSp',\n",
       " 'Parch',\n",
       " 'Fare',\n",
       " 'Survived',\n",
       " 'Embarked_C',\n",
       " 'Embarked_Q',\n",
       " 'Embarked_S',\n",
       " 'Sex_female',\n",
       " 'Sex_male',\n",
       " 'Pclass_1',\n",
       " 'Pclass_2',\n",
       " 'Pclass_3']"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_cols = num_attribs + ['Embarked_C','Embarked_Q','Embarked_S','Sex_female','Sex_male'] + ['Pclass_1','Pclass_2','Pclass_3']\n",
    "X_train_cols"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>22.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>38.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>26.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>35.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>35.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Age  SibSp  Parch     Fare  Survived  Embarked_C  Embarked_Q  Embarked_S  \\\n",
       "0  22.0    1.0    0.0   7.2500       0.0         0.0         0.0         1.0   \n",
       "1  38.0    1.0    0.0  71.2833       1.0         1.0         0.0         0.0   \n",
       "2  26.0    0.0    0.0   7.9250       1.0         0.0         0.0         1.0   \n",
       "3  35.0    1.0    0.0  53.1000       1.0         0.0         0.0         1.0   \n",
       "4  35.0    0.0    0.0   8.0500       0.0         0.0         0.0         1.0   \n",
       "\n",
       "   Sex_female  Sex_male  Pclass_1  Pclass_2  Pclass_3  \n",
       "0         0.0       1.0       0.0       0.0       1.0  \n",
       "1         1.0       0.0       1.0       0.0       0.0  \n",
       "2         1.0       0.0       0.0       0.0       1.0  \n",
       "3         1.0       0.0       1.0       0.0       0.0  \n",
       "4         0.0       1.0       0.0       0.0       1.0  "
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_df = pd.DataFrame(X_train, columns=X_train_cols)\n",
    "X_train_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "      <td>889.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>29.315152</td>\n",
       "      <td>0.524184</td>\n",
       "      <td>0.382452</td>\n",
       "      <td>32.096681</td>\n",
       "      <td>0.382452</td>\n",
       "      <td>0.188976</td>\n",
       "      <td>0.086614</td>\n",
       "      <td>0.724409</td>\n",
       "      <td>0.350956</td>\n",
       "      <td>0.649044</td>\n",
       "      <td>0.240720</td>\n",
       "      <td>0.206974</td>\n",
       "      <td>0.552306</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>12.984932</td>\n",
       "      <td>1.103705</td>\n",
       "      <td>0.806761</td>\n",
       "      <td>49.697504</td>\n",
       "      <td>0.486260</td>\n",
       "      <td>0.391710</td>\n",
       "      <td>0.281427</td>\n",
       "      <td>0.447063</td>\n",
       "      <td>0.477538</td>\n",
       "      <td>0.477538</td>\n",
       "      <td>0.427761</td>\n",
       "      <td>0.405365</td>\n",
       "      <td>0.497536</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>22.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.895800</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>35.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              Age       SibSp       Parch        Fare    Survived  Embarked_C  \\\n",
       "count  889.000000  889.000000  889.000000  889.000000  889.000000  889.000000   \n",
       "mean    29.315152    0.524184    0.382452   32.096681    0.382452    0.188976   \n",
       "std     12.984932    1.103705    0.806761   49.697504    0.486260    0.391710   \n",
       "min      0.420000    0.000000    0.000000    0.000000    0.000000    0.000000   \n",
       "25%     22.000000    0.000000    0.000000    7.895800    0.000000    0.000000   \n",
       "50%     28.000000    0.000000    0.000000   14.454200    0.000000    0.000000   \n",
       "75%     35.000000    1.000000    0.000000   31.000000    1.000000    0.000000   \n",
       "max     80.000000    8.000000    6.000000  512.329200    1.000000    1.000000   \n",
       "\n",
       "       Embarked_Q  Embarked_S  Sex_female    Sex_male    Pclass_1    Pclass_2  \\\n",
       "count  889.000000  889.000000  889.000000  889.000000  889.000000  889.000000   \n",
       "mean     0.086614    0.724409    0.350956    0.649044    0.240720    0.206974   \n",
       "std      0.281427    0.447063    0.477538    0.477538    0.427761    0.405365   \n",
       "min      0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   \n",
       "25%      0.000000    0.000000    0.000000    0.000000    0.000000    0.000000   \n",
       "50%      0.000000    1.000000    0.000000    1.000000    0.000000    0.000000   \n",
       "75%      0.000000    1.000000    1.000000    1.000000    0.000000    0.000000   \n",
       "max      1.000000    1.000000    1.000000    1.000000    1.000000    1.000000   \n",
       "\n",
       "         Pclass_3  \n",
       "count  889.000000  \n",
       "mean     0.552306  \n",
       "std      0.497536  \n",
       "min      0.000000  \n",
       "25%      0.000000  \n",
       "50%      1.000000  \n",
       "75%      1.000000  \n",
       "max      1.000000  "
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 889 entries, 0 to 888\n",
      "Data columns (total 13 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   Age         889 non-null    float64\n",
      " 1   SibSp       889 non-null    float64\n",
      " 2   Parch       889 non-null    float64\n",
      " 3   Fare        889 non-null    float64\n",
      " 4   Survived    889 non-null    float64\n",
      " 5   Embarked_C  889 non-null    float64\n",
      " 6   Embarked_Q  889 non-null    float64\n",
      " 7   Embarked_S  889 non-null    float64\n",
      " 8   Sex_female  889 non-null    float64\n",
      " 9   Sex_male    889 non-null    float64\n",
      " 10  Pclass_1    889 non-null    float64\n",
      " 11  Pclass_2    889 non-null    float64\n",
      " 12  Pclass_3    889 non-null    float64\n",
      "dtypes: float64(13)\n",
      "memory usage: 90.4 KB\n"
     ]
    }
   ],
   "source": [
    "X_train_df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x720 with 16 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X_train_df.hist(bins=50, figsize=(15,10))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Age</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.232543</td>\n",
       "      <td>-0.171485</td>\n",
       "      <td>0.093707</td>\n",
       "      <td>-0.069822</td>\n",
       "      <td>0.032098</td>\n",
       "      <td>-0.030436</td>\n",
       "      <td>-0.008964</td>\n",
       "      <td>-0.086506</td>\n",
       "      <td>0.086506</td>\n",
       "      <td>0.319924</td>\n",
       "      <td>0.017724</td>\n",
       "      <td>-0.289498</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SibSp</th>\n",
       "      <td>-0.232543</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.414542</td>\n",
       "      <td>0.160887</td>\n",
       "      <td>-0.034040</td>\n",
       "      <td>-0.060074</td>\n",
       "      <td>-0.026692</td>\n",
       "      <td>0.069438</td>\n",
       "      <td>0.116348</td>\n",
       "      <td>-0.116348</td>\n",
       "      <td>-0.052894</td>\n",
       "      <td>-0.056507</td>\n",
       "      <td>0.091515</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Parch</th>\n",
       "      <td>-0.171485</td>\n",
       "      <td>0.414542</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.217532</td>\n",
       "      <td>0.083151</td>\n",
       "      <td>-0.011588</td>\n",
       "      <td>-0.081585</td>\n",
       "      <td>0.061512</td>\n",
       "      <td>0.247508</td>\n",
       "      <td>-0.247508</td>\n",
       "      <td>-0.015809</td>\n",
       "      <td>-0.001278</td>\n",
       "      <td>0.014634</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fare</th>\n",
       "      <td>0.093707</td>\n",
       "      <td>0.160887</td>\n",
       "      <td>0.217532</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.255290</td>\n",
       "      <td>0.270731</td>\n",
       "      <td>-0.116684</td>\n",
       "      <td>-0.163758</td>\n",
       "      <td>0.179958</td>\n",
       "      <td>-0.179958</td>\n",
       "      <td>0.590576</td>\n",
       "      <td>-0.117609</td>\n",
       "      <td>-0.411932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Survived</th>\n",
       "      <td>-0.069822</td>\n",
       "      <td>-0.034040</td>\n",
       "      <td>0.083151</td>\n",
       "      <td>0.255290</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.169966</td>\n",
       "      <td>0.004536</td>\n",
       "      <td>-0.151777</td>\n",
       "      <td>0.541585</td>\n",
       "      <td>-0.541585</td>\n",
       "      <td>0.282368</td>\n",
       "      <td>0.095002</td>\n",
       "      <td>-0.320171</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_C</th>\n",
       "      <td>0.032098</td>\n",
       "      <td>-0.060074</td>\n",
       "      <td>-0.011588</td>\n",
       "      <td>0.270731</td>\n",
       "      <td>0.169966</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.148646</td>\n",
       "      <td>-0.782613</td>\n",
       "      <td>0.084520</td>\n",
       "      <td>-0.084520</td>\n",
       "      <td>0.299472</td>\n",
       "      <td>-0.126039</td>\n",
       "      <td>-0.154785</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_Q</th>\n",
       "      <td>-0.030436</td>\n",
       "      <td>-0.026692</td>\n",
       "      <td>-0.081585</td>\n",
       "      <td>-0.116684</td>\n",
       "      <td>0.004536</td>\n",
       "      <td>-0.148646</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.499261</td>\n",
       "      <td>0.075217</td>\n",
       "      <td>-0.075217</td>\n",
       "      <td>-0.154680</td>\n",
       "      <td>-0.127705</td>\n",
       "      <td>0.237035</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_S</th>\n",
       "      <td>-0.008964</td>\n",
       "      <td>0.069438</td>\n",
       "      <td>0.061512</td>\n",
       "      <td>-0.163758</td>\n",
       "      <td>-0.151777</td>\n",
       "      <td>-0.782613</td>\n",
       "      <td>-0.499261</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.121405</td>\n",
       "      <td>0.121405</td>\n",
       "      <td>-0.165022</td>\n",
       "      <td>0.190824</td>\n",
       "      <td>-0.013594</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sex_female</th>\n",
       "      <td>-0.086506</td>\n",
       "      <td>0.116348</td>\n",
       "      <td>0.247508</td>\n",
       "      <td>0.179958</td>\n",
       "      <td>0.541585</td>\n",
       "      <td>0.084520</td>\n",
       "      <td>0.075217</td>\n",
       "      <td>-0.121405</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.093142</td>\n",
       "      <td>0.066459</td>\n",
       "      <td>-0.134227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sex_male</th>\n",
       "      <td>0.086506</td>\n",
       "      <td>-0.116348</td>\n",
       "      <td>-0.247508</td>\n",
       "      <td>-0.179958</td>\n",
       "      <td>-0.541585</td>\n",
       "      <td>-0.084520</td>\n",
       "      <td>-0.075217</td>\n",
       "      <td>0.121405</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.093142</td>\n",
       "      <td>-0.066459</td>\n",
       "      <td>0.134227</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pclass_1</th>\n",
       "      <td>0.319924</td>\n",
       "      <td>-0.052894</td>\n",
       "      <td>-0.015809</td>\n",
       "      <td>0.590576</td>\n",
       "      <td>0.282368</td>\n",
       "      <td>0.299472</td>\n",
       "      <td>-0.154680</td>\n",
       "      <td>-0.165022</td>\n",
       "      <td>0.093142</td>\n",
       "      <td>-0.093142</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.287653</td>\n",
       "      <td>-0.625395</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pclass_2</th>\n",
       "      <td>0.017724</td>\n",
       "      <td>-0.056507</td>\n",
       "      <td>-0.001278</td>\n",
       "      <td>-0.117609</td>\n",
       "      <td>0.095002</td>\n",
       "      <td>-0.126039</td>\n",
       "      <td>-0.127705</td>\n",
       "      <td>0.190824</td>\n",
       "      <td>0.066459</td>\n",
       "      <td>-0.066459</td>\n",
       "      <td>-0.287653</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.567432</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pclass_3</th>\n",
       "      <td>-0.289498</td>\n",
       "      <td>0.091515</td>\n",
       "      <td>0.014634</td>\n",
       "      <td>-0.411932</td>\n",
       "      <td>-0.320171</td>\n",
       "      <td>-0.154785</td>\n",
       "      <td>0.237035</td>\n",
       "      <td>-0.013594</td>\n",
       "      <td>-0.134227</td>\n",
       "      <td>0.134227</td>\n",
       "      <td>-0.625395</td>\n",
       "      <td>-0.567432</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 Age     SibSp     Parch      Fare  Survived  Embarked_C  \\\n",
       "Age         1.000000 -0.232543 -0.171485  0.093707 -0.069822    0.032098   \n",
       "SibSp      -0.232543  1.000000  0.414542  0.160887 -0.034040   -0.060074   \n",
       "Parch      -0.171485  0.414542  1.000000  0.217532  0.083151   -0.011588   \n",
       "Fare        0.093707  0.160887  0.217532  1.000000  0.255290    0.270731   \n",
       "Survived   -0.069822 -0.034040  0.083151  0.255290  1.000000    0.169966   \n",
       "Embarked_C  0.032098 -0.060074 -0.011588  0.270731  0.169966    1.000000   \n",
       "Embarked_Q -0.030436 -0.026692 -0.081585 -0.116684  0.004536   -0.148646   \n",
       "Embarked_S -0.008964  0.069438  0.061512 -0.163758 -0.151777   -0.782613   \n",
       "Sex_female -0.086506  0.116348  0.247508  0.179958  0.541585    0.084520   \n",
       "Sex_male    0.086506 -0.116348 -0.247508 -0.179958 -0.541585   -0.084520   \n",
       "Pclass_1    0.319924 -0.052894 -0.015809  0.590576  0.282368    0.299472   \n",
       "Pclass_2    0.017724 -0.056507 -0.001278 -0.117609  0.095002   -0.126039   \n",
       "Pclass_3   -0.289498  0.091515  0.014634 -0.411932 -0.320171   -0.154785   \n",
       "\n",
       "            Embarked_Q  Embarked_S  Sex_female  Sex_male  Pclass_1  Pclass_2  \\\n",
       "Age          -0.030436   -0.008964   -0.086506  0.086506  0.319924  0.017724   \n",
       "SibSp        -0.026692    0.069438    0.116348 -0.116348 -0.052894 -0.056507   \n",
       "Parch        -0.081585    0.061512    0.247508 -0.247508 -0.015809 -0.001278   \n",
       "Fare         -0.116684   -0.163758    0.179958 -0.179958  0.590576 -0.117609   \n",
       "Survived      0.004536   -0.151777    0.541585 -0.541585  0.282368  0.095002   \n",
       "Embarked_C   -0.148646   -0.782613    0.084520 -0.084520  0.299472 -0.126039   \n",
       "Embarked_Q    1.000000   -0.499261    0.075217 -0.075217 -0.154680 -0.127705   \n",
       "Embarked_S   -0.499261    1.000000   -0.121405  0.121405 -0.165022  0.190824   \n",
       "Sex_female    0.075217   -0.121405    1.000000 -1.000000  0.093142  0.066459   \n",
       "Sex_male     -0.075217    0.121405   -1.000000  1.000000 -0.093142 -0.066459   \n",
       "Pclass_1     -0.154680   -0.165022    0.093142 -0.093142  1.000000 -0.287653   \n",
       "Pclass_2     -0.127705    0.190824    0.066459 -0.066459 -0.287653  1.000000   \n",
       "Pclass_3      0.237035   -0.013594   -0.134227  0.134227 -0.625395 -0.567432   \n",
       "\n",
       "            Pclass_3  \n",
       "Age        -0.289498  \n",
       "SibSp       0.091515  \n",
       "Parch       0.014634  \n",
       "Fare       -0.411932  \n",
       "Survived   -0.320171  \n",
       "Embarked_C -0.154785  \n",
       "Embarked_Q  0.237035  \n",
       "Embarked_S -0.013594  \n",
       "Sex_female -0.134227  \n",
       "Sex_male    0.134227  \n",
       "Pclass_1   -0.625395  \n",
       "Pclass_2   -0.567432  \n",
       "Pclass_3    1.000000  "
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corr_matrix = X_train_df.corr()\n",
    "corr_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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JeT5llzBJx5xGc8UODCaYVkpMXsx+GppiIUZTuWIhY58P58OBsazOBia6yOTbQLKJVVLpgYr9JrXhqnnlbWN8N2b1S7V8Jn/+RFf/bU/2S+6u7tZdN2tPLIPdqivVM3im9azwIX7Pn3NtL6i4FH1/OHt67l/H9P6is4r1fepO5/g6rPnc8HSZrq7u7nxxlv5zA746FK48Ua1SzX8/j/8mEd6PJ4q9QtjzEZrbffRtg8kgGSMuROOOvsIa+2rj1E2DPwIuADYBHzUWvvg0bbv7u62+rW4tkz9Aia1QW1Sm9QutUcBpNqkvlJ71Ca1Se1Se9QmtUntUnvUJrXpeAGkoH46/mzp9lqgE/hGafmtQM+xClpr88C6gI5DREREREREREQCFkgAyVr7SwBjzCettS+c8tCdxph7g6hDRERERERERESq46jZtU9SmzFm6aEFY8wSoC3gOkREREREREREpIKCzn76AeAXxpgdpeXFwDsDrkNERERERERERCoo0ACStfbHxpgVwMrSqq3W2myQdYiIiIiIiIiISGUFOoXNGJMAPgS8x1r7GLDQGPPKIOsQEREREREREZHKCjoH0h1ADriktLwb+FTAdYiIiIiIiIiISAUFHUBaZq39GyAPYK1NAybgOkREREREREREpIKCDiDljDFxwAIYY5YByoEkIiIiIiIiInIaC/oqbLcAPwYWGGO+CVwGvC3gOkREREREREREpIKCvgrbXcaYTcDFFKeuvc9a2x9kHSIiIiIiIiIiUllBX4XtE9baAWvtemvtD4DB0kgkERERERERERE5TQWdA2mhMeZmAGNMFPgesC3gOkREREREREREpIKCDiDdAKwuBZHuBH5urf14wHWIiIiIiIiIiEgFBZIDyRizdsri7cA/Ar8CfmmMWWut3RREPSIiIiIiIiIiUnlBJdH+3IzlIWBVab0FrgioHhERERERERERqbBAAkjW2pcYYxzgjdbabwWxTxERERERERERqQ2B5UCy1vrAu4Pan4iIiIiIiIiI1Iagk2jfZYz5oDFmgTFmzqF/AdchIiIiIiIiIiIVFFQOpEPeXrqdOhLJAksDrkdERERERERERCok0ACStXZJkPsTEREREREREZHqC3oEEsaYcyhegS12aJ219l+DrkdERERERERERCoj0ACSMeYW4MUUA0g/BK4G7gcUQBIRERER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vwE7gTdYa497CaZS2XXW2mMmwenu7rb6paW26Nev2qM2qU1ql9qjNqlNapfaozapTWqX5165ASS1SW1Su9QetUltqnQS7f8F/AUQAy4B/rz076iMMWFjzM+ANcBPjDEXBXxMIiIiIiIiIiJyCgKZwmaMmYBiruDSqjBwUWnd/UDyaGWttXlgXRDHISIiIiIiIiIiwQtqBNJvgUXW2iTwSmAIeDPw18BPA6pDRERERERERESqIKgk2q61drB0/83AN4GHS/9+FFAdIiIiIiIiIiJSBYEFkIwxIeAVwJ8AHvAGYBGQC6gOERERERERERGpgqCmsP0H8EuKV17bCmy11i4BrgOGA6pDRERERERERESqIJAAkrX20xSvvnaQ4tXXHGOMQ3EKW38QdYiIiIiIiIiISHUENYUNa+0DxpgewAD3UsyD1AeMBlWHiIiIiIiIiIhUXlBT2A55DZAGPgD8GNgOvCrgOkREREREREREpIICG4EEYK2dADDGJIE7g9y3iIiIiIiIiIhUR6ABJGPMO4FPUByF5FOczmaBpUHWIyIiIiIiIiIilRNoAAn4IHC2tVaJs0VEREREREREnieCzoG0HUgFvE8REREREREREamioEcg3Qz82hjzIJA9tNJa+96A6xERERERERERkQoJOoD0j8A9wBMUcyCJiIiIiIiIiMhpLugAUsFa+78C3qeIiIiIiBzF4pvWn9B2Pbdd8xwfiYiIPJ8FnQPp58aYG40xXcaYOYf+BVyHiIiIiIiIiIhUUNAjkH6/dHvzlHWW/8/encfJVZZ5//9ctfXenU5COitZCHsSIDSb44KAOhh1BBXFjUedQWd0YHQenYwzDOOCkxkVlHFccAHXn4r6KEMUBZR97QQhJAQSkobsSe9713b9/qjqTqfTnXSnT2rpfN+vV16pc+rcdV+n7rr6dF19n3NgUcD9iIiIiIiIiIhIjgRaQHL3hYd63sxe5+53B9mniIiIiIiIiIgcXUGfwnY4/5nj/kREREREREREZIJyXUCyHPcnIiIiIiIiIiITlOsCkue4PxERERERERERmaBcF5BERERERERERKTI5LqA1Jjj/kREREREREREZIICLSCZ2efMLDJkudrMbh1YdvfLg+xPRERERERERESOvqBnIEWAx81smZm9HngSWBNwHyIiIiIiIiIikkORw28ydu7+z2Z2L/A40Aq82t03B9mHiIiIiIiIiIjkVtCnsL0a+CrwWeA+4GtmNjvIPkREREREREREJLcCnYEEfAl4h7tvADCzy4E/AqcE3I+IiIiIiIiIiORI0AWkC9w9NbDg7r8ys/sD7kNERERERERERHIo6ItoTzez75rZXQBmdhrw1oD7EBERERERERGRHAq6gHQb8HtgVnb5BeAfAu5DRERERERERERyKPAZSO7+cyAN4O5JIHXoJmBmN5nZg2b21YDjERERERERERGRCQr6GkjdZjYNcAAzOx9oP1QDM3s98D6gElhvZue4+5Ojbd+4t50FK1cDcOE8uO2jK4KKXcZo4P0HaFyVef/beuL80y+f4ZltbcRTaRZOrWBXZy/xpFNXXcLy42uZU1vGlr3drNvZzvSqEi5dMotpFTGOn1bOr9Zu577n99LcGcfd6U+kiCedRLaf2rIIU8ujNLb0kvID46mMQjgSor03fVCsIWBKmRFPGWYGnqYr7kTDxil1lVSWRdm4q4O+ZJoQTlkswrSKUqZVxiiLGi8399LSG+eiU2Zwcl01v123i554gqkVMV5q6eOk4yo4oa6KtDvRUIjN+7o4cUYlx08rJ+3wwu4OmrrivPu8+SRSaaZXlrBkTg2PbG7i8a3NvGHJTE6bVXPUx2kBcN+q8eXKp37+ED9fm0nfK5bX8F9XvHJc7Z966iku+9lOAJbMjHHnP7xuXO0B/uVX69ja3M2/rjiV02aP/336w/rdbNjVwdvOmsu8aeXjbv/tB17knuf28L4L5vOmZXPG3X5Xey/P7ergpLoq5tbu73/pP6+m00duY8C0igid/Un6k1AegaqyKK3dCeLZj3gIqCwJ8aYzZvOe8xdw4x+e5+XmbhbPqOKchdM4pa6Cz/92I/Nryzl5ViW/+fMuasqjfOAVC9jS1M3rTpvJkjkjv58337OJrc3dXHvxYu56djcb93TysQsXs+i4Sp5sbCGVdubWlnLdb9ZTUxbjxnecQSQS9N8ijp56dr3CAAAgAElEQVRkKs0TjS2EzDhnwVRg5J9pklsjjYHGJb+Gvv/H5TEOOZDyojhonPJv+Bis29GucckzHesL03jHIOgC0ieAO4ATzOxhMr9zvP0wbU4FPglcBdwLnA+MWkDqTGQqTQD3bZtwvDJBC1auZjrw+Ts38MDze+lNZr4VN3e3DW6zryvOln3dlEbDdMeTJJJOaE8nW/d1c+7Cqezp6GP9zg5aexKj9AKtvUlae5MjPteVABIHF48gMxWupdfJ1jQHxVPOMzs7D36teIJ9XQnCezPLA8WqXzTsYG5tM9tb+8i8WjcG7Gjt5ZkdHYRDRkdfAjPjsS3NnHBcJem082JTN2XREM/t6uDNZ2QKEFWlYf7nT5tJpp1Ne7v4+nvOHnW/g9J4BG0GikcDj//rivG1HygeATy7Oz7u/n+1Zht3PL0DgH/+1Tp+87HxFbB2tPXwvYe34g572vv4j7ctG1f7tu4+vvanzaTTzudXP3dEBaQ7n95FV3+Sjbs7+bsLFw+uH614BJlPalP3/s96TxJ6Og/MjTTQ0Z/m9obtPLO9g427O0mlna3NPexs7+NrLT109Sd5YU8X92/aS2/CsWb4118/y2mza9i4q5Nvvb/+oL7/tHEPP2t4GYBP/aKHHW29AHy2ewOfesMpPPJiMwBf+v0+Nu3N5M/Nf9rEJ1538rjfm3x5ens7j29pAaAidvAhcMHK1foFJsc+8t3fHbRu3Y72wXPhJf/2AdPzHYQc8Eu+FA8dV3JPuVL4Br5DDvWulav5qXIlp44kVwL5s7GZnWNmM919LfAa4NNAP/AHYPthmlcCu7KP24HaEV7/ajNrMLOGVM8hJzRJnkyrLMnM8BmBAZFQiFgkRDgUAoOQGSWRENFwiOrSKNHQyG3zxSzzb+hyaSQT+wHbAaGQEQoZ4VCIkGX2NRoOEQkbYcvMfKooiQIQDhkVsQhlsTAAlSVB13Anj5k1pYOfqZqy6LjbV8QixLIzY6rLxv8+l4YjRMOZ9mXRIxun8pLMOJdHw0fU/nDCZkwpjzKQPmZGyIyKbL9mEA3v/9CWZOOoLB15f6ZXlhDKvudTK2NEsi9cUxqlPLZ/H2orogMdMqu6NNB9OtoG3hvYPz6SX381O98RiIiISL6peFQczP0Qfwof64uYrQUucfcWM3s18FPg74EzgVPdfdRZSGb2UTJ/3Po74GvAbHe/ebTtw+U1HqmZMbi8dJTTMOToWbfjwCJeVaKVutnzaO9L0NOfIhYxDCOS/eJaWxEjFj6wVplMO81d/QDEsoWkjt4EPfEU/ckU6RE+lsbweURHx9Aa0Xj7G4hx4DWGPg6Zkc7mW8hscGMnU5yaUV1KVfaLfVd/ktbuON3xFJGQUVUaoe4QX9R7Eyk6ejOzVCpKIjTt2k5n9MBa7HhzZfg457r9RKXSTtPAZywcorYiltP+R7J5y1b6SqYOfi7m1Jaxr6Of/tTIM+jGImQckC/Dl4cyoDwWIRSCBdMqDnq+tTvOzva+weWB40MsEuK4qhJauzOfsb5kilS2k6qSCAumH/xahWpXey/t2dmMteVRelt2TzhXZGI27Wqnb0gKLJ1Tw1MbNqFjfX6NdKxXruTXSMdV5Ur+jZQrCxYsyE8wMirlSuFpbGw84LgSAk7XuOTdmjVr3N1HnWgUVAHpaXc/I/v4f4B97v7v2eWX3f34Q7RdDnwYOBl4DrjV3Z8Yts3VwNUA4erjzp77t7cOPqcpobk3dKpbBVB2z/Xccc+D/OzJl/nztnaOn1rOzJpS4sk0JdEQ7zt/PlWlB84g6Uuk+MGjjXT3pzh7fi0za0r55ZrtPP1yK8/v7aKrL0kq7Qx8p4iEYEp55joww6+BZEA4BMlDfAcPWWb2T2J442HCltnWLEQ0bPTEU4ctIg30n5mssb/8FAuHSKTSmQJRNEw0bHT2p4iFjYpYmJJomL5EinjKOW1mFZ+7bCknHJc5QfOFPZ386LGXuO/5vUyrKOH9FyzgsuWjn0K1u72PnzdsI+3OiqWzuHLFa2m65DMHbDPeXBk+pXG87V/xhbvZ2bH/1LVc52p/MsUPH32Jzr4kZx4/hdeePOPwjY6yM5cvJ77iBvqTaarLonzlXWfx2PO7+MbDR34+7vHTSnm5eX/Rp7IkQticjr7M/QuqSkJ09KcxYEp5hJPqqjmprorPvXXJQa/1zLY2rrr1CRLJNNOrYuzpyBTgzl80jY++djFf/sMLOE5fIsUz29sxM/7h4sX8/cUnHXH8uXZ7wza+eu8mAFZeejL//sG/mnCuyMTcfvtqPrlm/3LjqhWUzDqRWVd95YB1klvDjwHT77leuZJny1eupmXIsnKlMIyUKw0NDXmKRkajXCk89fX1BxxXNCaFwczWuPvB17oYeD6gAtKzwJnunjSzjcDV7v5A9rm4ux/yT//Zu69dBfzY3T96qG3r6+t94IOmD1l+XLpyNc9lHzeuWkF9fT0NDQ209cTpiWe+tM6sLmVfVz8VJZFRT9PqiSdp700wszpzqlJTVz998RTtvXG27uvGwtDSGae7P8mc2nJesXg6j7y4l61NvRxXFWN3Rx/dfSmWz5/CtLIIm5t6+Ldfb6AsCv/0xlPZ0tRNTVmEU2fVEI+niUQyp5j97LEtpCxM/YKpVJdGae7uBzeiIefVp9SxrbmXipIIM6pL2LSrkxdbuphXW0Z/0mnq7MfdiUSMVDpzmlXEQpTGwiw6roJntrVxxtwpvNjUzYzKUqaUR7jv+X2879z5PLmtFRzKYmGi4RDTqmLs7egnmU4xb2oFc6YceJHnpq5+9nX14c6YLrTd3pMgkc5cqHtgTAZ+qTnSXFl2/WpSaVj/uSNr/7b/eYBd7f088unxX0A7CL3xFG298cHPWL7V19fz4/+9l7s37OGNp89iYV0lZsaHvvso925qIQy89uRp/OXpM/n2Qy+yZW8fZ8yr4qJT6+jsS3HPht3sauvl1NkVVJSW8PGLT2ZRXRU/eHgLW5q7uWDhdGbUlHLugqncdM/znLNgKguPq+J3T+/AQsZ7z5vPluYeTp1ZRekI1/8BWL+jjRf2dHHJaXWs39HOzrZeLj97HgAvNXeTSKZZXFfFbQ++yPSqUt505vivDZVva19qJWRw5vG1geWKTMzilatJAq+cBT+6dsUBv1RqTPJnaF7U19dz+eWf4ZYOBtdJ7g2MyeeXwHvfq1wpFMNzZaCANJbri2jcckO5UnhUQCpMuSog7QaqgCQQAzZlnyoBTjzkFCizKPA74GxgLfBpd398tO3r6+tdVf3CMvRAKYVBY1KYNC6FR2NSmDQuhUdjUpg0LoVHBaTCpFwpPBqTwnS4AlJQV/A14CNAGfAA0Jtdvwj4+aEaunsCuCSgOEREREREREREJGBBFZDuBLa6+0PD1r9kZncH1IeIiIiIiIiIiORBIAUkd//QIZ5798BjM6t199Yg+hQRERERERERkdwY9dpER8m9Oe5PREREREREREQmKNcFpPzfBklERERERERERMYl1wWkid/yTUREREREREREcirXBSQRERERERERESkyOoVNREREREREREQOKdACkpmdYGYl2ccXmtk1ZjZlyCYXB9mfiIiIiIiIiIgcfUHPQPolkDKzxcB3gYXATwaedPeWgPsTEREREREREZGjLOgCUtrdk8BlwFfc/ePArID7EBERERERERGRHAq6gJQwsyuBq4A7s+uiAfchIiIiIiIiIiI5FHQB6QPABcAN7r7VzBYCPwq4DxERERERERERyaFIkC/m7huAawDMrBaocvdVQfYhIiIiIiIiIiK5FfRd2O4zs2ozmwo8DdxqZjcG2YeIiIiIiIiIiORW0Kew1bh7B3A5cKu7nw1cEnAfIiIiIiIiIiKSQ0EXkCJmNgu4gv0X0RYRERERERERkSIWdAHps8Dvgc3u/qSZLQI2BdyHiIiIiIiIiIjkUNAX0b4duH3I8hbgbUH2ISIiIiIiIiIiuRVoAcnMSoEPAacDpQPr3f2DQfYjIiIiIiIiIiK5E/QpbD8EZgJvAO4H5gKdAfchIiIiIiIiIiI5FHQBabG7Xwd0u/v3gRXA0oD7EBERERERERGRHAq6gJTI/t9mZkuAGmBBwH2IiIiIiIiIiEgOBXoNJOAWM6sFrgPuACqBfwu4DxERERERETlGLVi5+rDbNK5akYNIRI4tQd+F7TvZh/cDi4J8bRERERERERERyY9ACkhm9olDPe/uNwbRj4iIiIiIiIiI5F5QM5CqAnodEREREREREREpMIEUkNz9M0G8joiIiIiIiIiIFJ5A78JmZt83sylDlmvN7HtB9iEiIiIiIiIiIrkVaAEJWObubQML7t4KnBVwHyIiIiIiIiIikkNBF5BCZlY7sGBmUwn4Tm8iIiIiIiIiIpJbQRd3vgw8ama3Aw5cAdxwuEZmdhNQD6x192sDjklERERERERERCYg0AKSu//AzBqAiwADLnf3DYdqY2bLgQp3f5WZfcPMznH3Jw/VZsHK1QA0rloRUOQyXgtWrmYqsHbIGGzY3kJvby+RkjLKY1FSqQTlsSilJSGioShpnFTKaensYmplORUlYeIpo7w0TCLp9PT30Z80Uv3dbGqOU1FawrbmTlp7uigpKeG40hIaW3oojYWZW2m09Bk9XV3EKiopiUaYWh7lb378NACr3ng8/VbCjOoKwqE03YkENeVR+vthamUZ3f39LJwSo7Kyir6+blr6jHjSmVKRiTsajlEedfpTITp7kyyqq6Q/niCeShGyCDUVUZo6+glZiopoCbFYiNJYhF1tvUytiAEQNiOeTlMei9DZl6AkEgb3zJtlhuOURMIkUmlwMINIeP+kwGQqTTyVaT8gnkwTCRmhkI15nODIc+V1n8u0v/u6I2u/8vaH2bSni19+7A1H1L6nJ0FHIsHMmvIjap9KpejoTVFbGTui9gAvNXUzf3rFEbfvT6YyY5/V09PDul3dvPPbTwyuOx7oAt77FzNZPGcqJ86ooKq8nJJIlP5UnJqyUjbuaGV2bSVzph7ZeyGHpuNK/p20cjUvDHn/P7hyNX9EY5JPI+WFciW/Fq9cTRKNSaHRGBQHjVP+LVi5mlOAu4b9DNOY5M9488J84AvtBJhZKfARYDGwDviuuyfH2PbTwF8Ds4H3ATPd/b9H275k1ok+66qvDC7rw5Z7Ax8ygKlA6J7rqXvfjazf1Tlqm0jIwJ3kkI9bSdgoiYaZWhGjsy9Jc3f8KEY9cdEQJNMQCRvRkNGbSONA2GDp3Bq6+1Jsb+shGg6xZE418aQTi4SYVVPKC3s6SafhuOoSIFMsml1TxrK5NTQ29fDCnk5On13NFefMY25tOdtbe/jyH55nX2ect5wxmyvOmcdzuzr4w/o9TCmP8s5z5lEaDY8aa319PU2XHHhzxPHmytBxzkf753e18/ZvPUY8mebNy2bxpSvOHFf7rt447/3ek+zr7OPNy2az8o2njqs9wPlfuIeW7jgn1lWx+ppXjbv93Rv28OyOdk6ZWcWlS2dx5lnLaXvD58b1GkZmOueAy86czU3v0qXlghJErsjEDf150bhqBSWzTkTH+vwa/jN8+j3XK1fybKTjqnIl/0bKlYaGhhGfG4nG7MiM971VruTf4Y4rGpPcG+m4YmZr3L1+tDZBXQPp+2ROQVsHXAp8aRxto8CngMeAdqB2+AZmdrWZNZhZQ6qnPYBwJSgt2f837h69eASQTB9YPALoTzl9iRR7Ovro6C3s4hFAIjNRiGTK6ckWjwBSDns7+nm5tYd02umOp2jqjLOno49U2mlobKU3nmJPZx/NXf20dPWzp72Plu44DS+10tYTp6s/SWtPgq1N3QBsbepmb0c/iVSaP29rxd3ZvLeLtDst3XH2dfbn7X3IldXrdtGfSOHuPLqledztN+/rZl9nHwCPb205zNYH29HSQ0u2qNmYHZfxemFPZ/b/Ltydtp7EuF9jeIn/icbx74tIIbv0Pw7/JUBEREQmt78cQ1FQ8i+oGUjr3H1p9nEEeMLdl4+x7UeBfcDfAV8DZrv7zaNtHy6v8UjNjMHlpXNqJhK6HIF1O/YX8aaWQaKjldKpM2nq7MfJzJiA7ClZoRDRcAizTBHJ3SmNhplXW4ZZZsvu/iTtvQniyTRlsTC9iRR98VRm+yH9hsxw94O+UE9ESSREMu2k0z4Yc/ZhZtZUVjhkREIhEqk04ZCRcieZSme3CxEJG4mUk0qnMTOmVsTojadwh7JYiFQakun9p6O5O1WlUcpjYZLpTFEIh5ryKCWREP3JNG098cHXiozxlLUBjY2NdEYPrMWON1eGjvORtN+yr4vueArIVKpPH2f7ZMrZ3tpD2qG2PEptxZGfhlYotmxtpCdWO6bP8PSKGLOmlLG7o4/OviR9iRQGVJZEWDCBU+rkQEHkikzc0J83S+fU8NwLL5KsmH7AOsmt4ceAqkSrciXPNu9pp3fI/P6lc2p4asMm9HtxfilXikNjYyMLFizIdxgyxPDfwZQnhWHNmjXu7qNONArqGkiDf1Z39+RAYWCMHgU+nH18MXDr8A3M7GrgaoBw9XEHTD9s0FS3nBs+1W3OPddzwt/czNqX2kikHQNCITCMqeVRplWUYCFo7YkTDYeYVVPGzVeeRV11KQC/WLOdRzY3saOtl8UzKnh6WzvbW3to700OKyBl/iXTwe1LbVmE/pTTG08Rssxsj4GaaknECIcyxa+y7Kl2bb0JplXEeKm5h1TaSaTS1FbEmF1Txgt7OgfjfcPpM9nemjmdLRo2qkqjtHTHOXVmFWZGdVmUE+sqedOy2Ty7o527N+wB4NyFU/mLxdN5aFMTT2ZnmrzutDqWjPMH6kin5Yw3V4aP83jbn/yvv6V6yLSz8bZ/YmszX/7DCwAsmVPDdW86bVztC9HJS84g8eYvDBYpD+WMudX85mOv4u9+vIZntrWxva2PSAjqqkt5eOXFRz/YY0QQuSIT89CmPbz3uw2Dyw2rVlA55yRmve+mA9ZJbo3lFDaNS24tWLmaKUOWG0Y4hU1jknvKleJQX18/eGqhFIbhv4NN58BrI0l+mNnaQz0fVAHpDDPrIjP5JA2UmVlHdjnk7qP+udzd15pZH3AmsN7dnxhhm1uAWyBzDaSAYpYANK5aQX399Xz60tP46E/W0NWfpK66hN5kmvJohIXTyzm+tpxIOERHX4K9nf284oTpg8UjgL9YPI2+RIqZNaUsnVPDCcdV8ceNe9jZ1su21h6SKagqMc5dMI1nd3biOPs64wzUkQyoKQ3T1pc6KL6wZTZIDSk6RQ2SDuWxEG86Yw6b9nSyrbWHSAhm1pTxwp4uwiHj7Hm1tPXFCVuIWVNKmV4ZY1tLL+UlEV55wnR+t343NWVhZk+pYEZVCafOquLhzU0snFbB286awxMvtdLa3c8bTq9j895u2vuSnDWvBgdauhOcv2gaACfVVbGtpYd4Ks0Z8zK/Gp55/BSau/uJhUOcVFd1dAbvMF61aAoPbmkbfDxet32gniu/nbke/luXzRx3+/r5tbxi8TR2tvXxznPmjbt9IaoqjTJjZhUvNfcMzs4aSWnEuG5FpmB25bnHUxYJkdjcRMrhmteemKtwj0mlh99EAvbKE+sIkfnloTSS+QPUKbOqaco+P6Mymq/Q5BB0rYrca1y14uBihSakFpT/OxduG7ZOuVJYxnLtJNC45YOKR8UhqFPYrgE+CjxHphB0rbv/Jvvc2rGczmZm9wGXHO7i2/X19a7qcWFRRb/waEwKk8al8GhMCpPGpfBoTAqTxqXwaEwK08C4qIBUOJQrhSlXF9H+G+Bsd38rcCFwnZldOxDDYQKMmtk9wBnA783svIBiEhERERERERGRAAR1ClvY3bsA3L3RzC4EfmFm8zlMAcndE8AlAcUhIiIiIiIiIiIBC2oG0m4zO3NgIVtMehOZa2EtDagPERERERERERHJg6AKSO8Hdg9d4e5Jd38/8OqBdWZWO7yhiIiIiIiIiIgUtkAKSO6+3d13j/Lcw0MW7w2iPxERERERERERyZ2gZiCN1SGvhyQiIiIiIiIiIoUn1wUkz3F/IiIiIiIiIiIyQbkuIImIiIiIiIiISJHRKWwiIiIiIiIiInJIgRaQzOwEMyvJPr7QzK4xsylDNrk4yP5EREREREREROToC3oG0i+BlJktBr4LLAR+MvCku7cE3J+IiIiIiIiIiBxlQReQ0u6eBC4DvuLuHwdmBdyHiIiIiIiIiIjkUNAFpISZXQlcBdyZXRcNuA8REREREREREcmhoAtIHwAuAG5w961mthD4UcB9iIiIiIiIiIhIDkWCfDF33wBcA2BmtUCVu68Ksg8REREREREREcmtoO/Cdp+ZVZvZVOBp4FYzuzHIPkREREREREREJLeCPoWtxt07gMuBW939bOCSgPsQEREREREREZEcCrqAFDGzWcAV7L+ItoiIiIiIiIiIFLGgC0ifBX4PbHb3J81sEbAp4D5ERERERERERCSHgr6I9u3A7UOWtwBvC7IPERERERERERHJrUALSGZWCnwIOB0oHVjv7h8Msh8REREREREREcmdoE9h+yEwE3gDcD8wF+gMuA8REREREREREcmhoAtIi939OqDb3b8PrACWBtyHiIiIiIiIiIjkUNAFpET2/zYzWwLUAAsC7kNERERERERERHIo0GsgAbeYWS1wHXAHUAn8W8B9iIiIiIiIiIhIDgV9F7bvZB/eDywK8rVFRERERERERCQ/AikgmdknDvW8u98YRD8iIiIiIiIiUlgWrFw9pu0aV604ypHI0RTUDKSqgF5HREREREREREQKTCAFJHf/TBCvIyIiIiIiIiIihSfQu7CZ2ffNbMqQ5Voz+16QfYiIiIiIiIiISG4FWkAClrl728CCu7cCZwXch4iIiIiIiIiI5FDQBaSQmdUOLJjZVAK+05uIiIiIiIiIiORW0MWdLwOPmtntgANXADccrpGZ3QTUA2vd/dqAYxIRERERERERkQkItIDk7j8wswbgIsCAy919w6HamNlyoMLdX2Vm3zCzc9z9ydG2X7ej/YBbBOo2gLk30vu/eU8n7//e4zR19RMNGbOnlLK7vZ/ykghnL5jKjKoYIYOu3hR3P7eHsliE02dX0xNPcslpdVSVRPnBY41sa+6hoy9JyoOPOwSkhywbUBoJ0ZdMM9BdNATRcIhwyKiIhmjrTtDvUBWDaCRKV3+SsDklkRCO44Qoj0U4dVYVJ9ZVsW57B/OnlvDcnm5OqqtiZnUJf3p+H69ZPI0dHf00dfZTVRphRlWMSCREMgl7O/pZNq+Gj1y4eDC2VNr50/N7uXv9buZOLecDr1hIJGz8eVsb0ypinFh34I0P3Z11O9pJpNKcOa921HEaj3/+8Wr+v3WZx1cuhf94z/hfYyCGVy6K8qOrXz/u9j94ZCub93XzsdeewIzqsnG3/+b9m3lyawsff91JLJkz5fANhvnWfZu5a/1u/vpVi1ixbPa42zd19fPC7k4Wz6hkRnUpAO/7zmM8uLl5XK8TBlLD1kUN3nzGLN5RP5d/+uU6Wrr6mDutktNn1/CWpXX86x3PsXBaOa8+eRq3PfIyJeEw//i6xexo7+eiU+s44bjKEfv68u838vyeLq4853h+9+xOmrvj/NNfnsLiGZX8au0O4inn1Yun87c/WUtVLMwPPnQOkUjxTDSNx1Pc9MdNhEPGxy/O5JyOKfk30hhoXPJLY1KYNC6FR2NSmDQGxUHjlH/jHYNAfus3s1LgI8BiYB3wTXdPjrH5XwKXmFkf8D7gfGDUApIUlgUrVzMdeO93H2d3Rz8A8ZSzaV8vAJ3xOL9dt5tY2AiHjN5EpoTT2ptkZ3sfYYOnt7cTMqOjb6wfmSOTHrbsQG/ywLWJNCTSmXWd/fu/snfEgXhicLlnsF2K9r4Uuzv6ue/5JkIh45EtTshg/Y520tnK1PqdHURCRiLlhIBwxAibkUo7YDy1rZU5U8p485lzAFj7civ/fe8mtuzroqIkQthg8Ywq1u/sAOA950eZUVU6GM/mvV3c+9zezH6OUHxbsHL1uH8oDxSPBh7/x7haH/jD6KEtiUNsObKHNu/jWw9sAaCpK87X37N8XO2f3dHG1//0Iu7Ox3/2NHd/4jXjat/U2cNN92wi7c6nf7XuiApIv/nzTjp6Ezyzo52PvOYEOvsS4y4ewcHFI4CEw6/+vIt7Nu6loy+zxcbdXbzc0sNv/ryDZBq2tfbyyOZmBjLr47ev48x5U3hqWxtff8/ZB73m79bt5LZHGkk7NDQ20xVPEzL4xM+f5iOvOYHb12wH4OZ7X2BvZybfP3H7M9x85fjGJp9uvm8zd/x5BwDlsYPP4j6SXJGJGfqzYsC6He3MykMsMrKBY/3wdcqV3FKuFD7lSmEYKVek8J22cjUblCs5dSS5EtQ1kL5P5hS0dcClwJfG0TYKfAp4DGgHaodvYGZXm1mDmTWketoDCFeCFouM/lEyIGRgNvLzITPCQV+NK8eMzP4N3cWhy4PPW2YhhA2uG9iovCQ82DYSyhTcBl6nJBImmn2TQmZEQge+YZEhb2AkNMobXWRKwyEs+6GJRca/T7FwiIG3Ihoef/toODr4mQ0d4Xs60O/AmBjBj81I+xYekmxDn97/foyccKXR8OB7HgqFGPh4RsMhSqP72wz0aUB5LHzwCxWwsiH7UR4tnplTk9nMfAcgIiIieafiUXEw94mfK2Rm69x9afZxBHjC3cf0J2kz+yiwD/g74GvAbHe/ebTtw+U1HqmZMbi8dE7NREKXI7Bux4FFvKpEK30l0wZn7oxk4Dvs8E+bsf/LeWqkqTMFJGSGu2NmREJG2p20Qzhk1FWXUFseI+VOU3ZmRiwSorY8RlNXP6m0k0w5kewX72TaiYRs8H+AKeUxSoYU4gbamRkzqkpo703Ql8jMNJlaERu1CADQ2NhIZ4PRUbsAACAASURBVPTAWux4c2X4OOe6fUdvgp3tfUDmS//8aRXjat+XSNHY3ANALGwsGuWUrdEkUmme390JgJlx+uzqcbUH2NfZT9r3j+GLW7bSVzqN9AR+7upnXrCCyBWZmG0tnbT17j9+LJ1Tw1MbNqFjfX6NdKxXruTXSMdV5Ur+KVeKg3Kl8DQ2NrJgwYJ8hyHDrFmzxt191C+aQf35NWFm5wLu7k+aWamZfQLY6O6/PUzbR4EPZx9fDNw6fAMzuxq4GiBcfRyzrvrK4HMNqlTm3NCpbrOB+D3XM+uqm1i3o2PE7UNASTRzXaHu/tRgEWlgfW1FlJAZO1r7DiowFYowUFUaoSeRoqIkQl11Cb2JNK3dcarLonzxbcu4YPF0+hIpbnukkd54itNmV/OG02fyyzXbebmlh0QqTTRsuEPSnWgoRNo9OwPLuPLc4zmuqmSwz58/uY0dbb1Mq4zx/gsW8MjmJh7f2kI0bLzvggXUlEVHjbe+vp6mSz5zwLrx5srwKY25br9hRzt/++M1JNPOhScdxw2XLxtX+70dvbzrlsfpT6ZYNncK33jvwadsHUpPT4Jz//Ne4sk0tRUxHv/0JeNqD/DTJ15mV3sf06tKeN/58znzrLOxt36B1t4jO10zFjYabnjjEbWVkQWRKzIxf/zjH/ngH3oHlxtWraBk1ok61ufZ8J/h0++5XrmSZyMdV5Ur+adcKQ7KlcJTX19PQ0NDvsOQYcxs7aGeD6qAdCbwSKY/S5I5Le0LQMTMku5eOlpDd1+bvf7RmcB6d39ihG1uAW4BqK+v96bsep1PnH+PrFpBff31/PzDr+Dzdz5LY3MPsXCIs2dX8tSubmZUx1g6dwq15THCBo7xk8dfoq6mhHMXTieRTHPG8TWELMT9L+xjy95OdrX2sHFPBzVhZ2evk8peUTvlmWsUASyYWkIy7bR0xQkZpJMwa1o5LzZlZpxML8+c/jStNExbf6ZQtXB6OVMqYrR3x4lGwtTPn4KFwmzZ20lLTwLSSSKRKHOmlFFeEiEaCdHeE6e5q5/Xnz6TWCTM7vZe6mrKmFNTCmY8s62dhdPLqV84DcicAvTu846nuSvO8VPLAXjzGbPZ3trDzJpS2nsTGEZ1WYTd7X3MrS1nT0cf5bEw0ypLDnhv/+qs2exo7WX2lMzFoy84YRpzasuoLo0esng0oHHVisFfao4kV/Ld/rQ5NXz1XWextambt5wx/is8zKgu4xvvXc4z29t50xFcv6i8PMqP//o8fvPUTj70yoXjbg/w1rPmsLNt/xhGwsZtf30eb/rvh0fcviQEZx1fzcyaMipKYsRCgIV447I6vv1AI9defNIRxSFjp+NK7l100UXwh8zPigXZ+wMsnVPDwLH+xPyEdcwb/jO8vv76g56X3Bo6JgMzu4fmisYk/5QrhUu5IseisV7jaDw5EdgpbGQKQCXAbmCuu3eYWRnwuLsfduqAmd0HXHK4i2/X19e7KpWFRdXjwqMxKUwal8KjMSlMGpfCozEpTBqXwqMxKUwal8KjMTn6jqSAZGZr3L1+tG2DunRx0t1T7t4DvOjuHQDu3svBN786gJlFzewe4Azg92Z2XkAxiYiIiIiIiIhIAII6hS1uZuXZAtLghUbMrIbDFJDcPQGM/+IiIiIiIiIiIiKSE0HNQHp1tniEuw8tGEWBqwYWzKx2eEMRERERERERESlsgRSQ3L1/lPVN7r5uyKp7g+hPRERERERERERyJ6gZSGNlh99EREREREREREQKSVDXQBqrid/yTUREREREREQmhbHcLWw8t5qXoyfXM5BERERERERERKTI6BQ2ERERERERERE5pEALSGZ2gpmVZB9faGbXmNmUIZtcHGR/IiIiIiIiIiJy9AU9A+mXQMrMFgPfBRYCPxl40t1bAu5PRERERERERESOsqALSGl3TwKXAV9x948DswLuQ0REREREREREcijoAlLCzK4ErgLuzK6LBtyHiIiIiIiIiIjkUNAFpA8AFwA3uPtWM1sI/CjgPkREREREREREJIciQb6Yu28ArgEws1qgyt1XBdmHiIiIiIiIiIjkVtB3YbvPzKrNbCrwNHCrmd0YZB8iIiIiIiIiIpJbQZ/CVuPuHcDlwK3ufjZwScB9iIiIiIiIiIhIDgVdQIqY2SzgCvZfRFtERERERERERIpY0AWkzwK/Bza7+5NmtgjYFHAfIiIiIiIiIiKSQ0FfRPt24PYhy1uAtwXZh4iIiIiIiIiI5FagBSQzKwU+BJwOlA6sd/cPBtmPiIiIiIiIiIjkTtCnsP0QmAm8AbgfmAt0BtyHiIiIiIiIiIjkUNAFpMXufh3Q7e7fB1YASwPuQ0REREREREREcijoAlIi+3+bmS0BaoAFAfchIiIiIiIiIiI5FOg1kIBbzKwWuA64A6gE/i3gPkREREREREREJIeCvgvbd7IP7wcWBfnaIiIiIiIiIiKSH4EUkMzsE4d63t1vDKIfERERERERERHJvaBmIFUF9DoiIiIiIiIiIlJgAikguftngngdEREREREREREpPIHehc3Mvm9mU4Ys15rZ94LsQ0REREREREREcivQAhKwzN3bBhbcvRU4K+A+REREREREREQkh4IuIIXMrHZgwcymEvCd3kREREREREREJLeCLu58GXjUzG4HHLgCuOFwjczsJqAeWOvu1wYck4iIiIiIiIiITECgM5Dc/QfA5cAeYB9wubv/8FBtzGw5UOHurwJiZnZOkDGJiIiIiIiIiMjEBDIDycxKgY8Ai4F1wDfdPTnG5hcA92Qf3wOcDzw52sbrdrSzYOXqweXGVSuOJGSZgKHvfxioBW57eAs3rN5IMu1EDCxshDBqK6KcNrOaaDRER0+C9r4kZ8+v5boVp/Kbp3exq62XBdMreHxrM49vbcFTKXZ1xunpT+HD+g0bpIavPIpCQHqM21r2/4HwomHDgHTacaCyJEJ/Ko175v2JRcPUVZXSl0zTl0gxpSzK65fM5D3nzaeuupRntrex6ncbeXFfF/OnlvGPrz+F8xZNG7X/jr4Ev2jYTjyV5rKz5gAHjhOMP1cm2v6CG37Hrs797+B423f2Jbju1+tp6urjg69cxEWnzBhX+3Ta+fWfd7C9tZeLTpnBkjk142p/NKTT6YPe14koiRj182t5+MUWIPM5rK2IUVcV4/k9XYRCxuzKKC+3xwkZnFJXRU15jItOOY6/efUJB73e7vZe3vGtR+noSbBkbjXrd3SQTMO7z53He86fz+fv3EDKnbqqEm5fs4NwCL5+5XIuPn1mYPt0tD2+tZl/+dU6zIwvvn0ZMPHPukzc8OP6Bh3r8254XkwfYZ3GJbdOXrma/iHLjatW6PfiAnC4XDkFuEvjklMj/axSruTfSLkixSeoGUjfJ3MK2jrgUuBL42g7BejIPm4nU484gJldbWYNZtaQ6mmfaKwSoFT2/5837CCZLZYkHOJJpz+Zpq0nwdbmbl5q7mFLUzedvQme393Jxj2dbGvpIZl2Hty0j637umnvidPcPXLxCHJbPIKxF48gUzgaGl4y5cRTTtIzcbf3JUkk08STTk/C6e5P8VJLLy3dcTp6E7T2Jmhs6uGFPZ0APLS5iabOfnr6kzR3JXhgU9Mh+3+pqYf23gS98dTga+Tb0OLRkdiws4Nd7b0kUs4DL+wbd/v23gQvNfeQSjvP7iiMnxtNXfFAX68/6ax9qXVw2YHeeJLnd3eR9szncHt7ps+0w/N7Okm788iLzSO+3u/X76atO04i7Ty9rZ2eeIpkKs29z+3lsS3NdPQl6e5Pcdezu0m7k0g5tz66NdB9OtpWP7OL3kSKnniSu57dne9wBDh3hKJqaoTtRI51/YffRArQxnwHICISIHOf+LdyM1vn7kuzjyPAE+6+fIxtPwrsc/efm9nlwFx3v/kQ2+8DXiJTtDz0t+rCVuzxw/59WA6sZXLs03gV6j4PjAkUbowDjqX4Cj1XjsW4iilXDmcyxV/ouTIexb4Pw4/1Q9cVq8kU/2TJlWKPH5QrhUi5UpiUK4VnaPzz3f240TYM6iLaiYEH7p40s0NtO9yjwIeBnwOXALcdauOBnTGzBnevH3ekBaLY44eD92Ey7NN4FcM+F3qMx2J8hbrPx3pchbr/YzUZ4y/2fYLi34fJOC6TMf7JuE/FRuNSeDQmhUnjUnjGE39QBaQzzGzgNDQDyrLLBri7V4/W0N3XmlmfmT0IPO3uTwQUk4iIiIiIiIiIBCCQApK7hyfY/tog4hARERERERERkeAFdRHtfLgl3wFMULHHDwfvw2TYp/Eqhn0u9BiPxfgKdZ+P9bgKdf/HajLGX+z7BMW/D5NxXCZj/JNxn4qNxqXwaEwKk8al8Iw5/kAuoi0iIiIiIiIiIpNXMc9AEhERERERERGRHFABSUREREREREREDkkFJBEREREREREROaRA7sKWK2ZWAdQCbe7ele94jkVDxwA4GTh/yPJj7t6Qx/AkS7kycUG+h2Z2NsqVgqRcyb/hY6Axyb+RxkDjkn/KlcKjXClMypXCo1wpTEcyBkVxEW0zuwi4DujI/qsGqoAvuPs9+YxtLMzsH9z9K2Z2BvDfgJMp3q109wfzG93YjDAGrwBKgO8AD5IZk0uAlLtfk684jyYzCwNvZVghAPi1uyfzGduAQs+VYsiFoN9DM7uJTK7cA7RTILliZpXAR8h8nqew//P8LXfvnOxxFXquHE4x5NLhjDAGi4DTgA3AFopsTKD4x2WUvDgeMOAllCt5MdlyZZKOiXKlAChXCo9ypTBN6Pdgdy/4f8BDQPmwdRXAw/mObYzx/zH7/x+AxdnH04sl/pHGAHhgpDEAHsh3rEfxPfgh8ElgOXACcFZ2+Uf5jm20ccquK5hcKYZcCPo9HC0n8p0rwB3AO4CpQJhMUfQdwP8eC3EVeq6MIf6Cz6XxjkF2+YB9KKYxmQzjMkpePAI8Omxd0YxLsY/JSONS7LkyGccku065kv99UK4U2D/lSmH+m8jvwcVyDaR+YOmwdUuBvjzEciSmZqt8U919M4C7N5GpVhaL4WPQQKagUmVmrzezt5vZN4C1eYkuNxa4+xfdfa27v+juT7n7F4H5+Q5siELPlWLIhaDfwwYz+2Y2RwopV6YBv3T3FndPuXsr8EsyhZtjIa5Cz5XDKYZcOpzhY9APvIUDx6CYxgSKf1xGyosoB1/yoJjGpdjHBCZfrkzGMQHlSiFQrhQe5UphOuLfg4vlFLZZwEpgGZkLf6eAZ4AvuvuOfMY2FmZ2/ZDFr7p7m5lVkYn/I/mKazxGGYNdwLNkpiC2kakkP5W3II8yM/sk8BrgPvZP9XsN8KC7/1ceQxtU6LlSDLlwNN5DMzsLuID9p2TlPVfM7N1kThV7hsznuQY4Hfi2u/94ssdV6LlyOMWQS4czwhiEyfz1qwdIUmRjAsU/LqPkxebs4xNQruTFZMuVSTomypUCoFwpPMqVwjSR34OLooAkUijMbDpwLnA2mR9+m939yfxGJXJkzCwCnESmSNMGbPICuJ5XocYlIiIiInIsK5ZT2EZkZjfnO4aJMLOv5juGiZoM+zBWZnZXdnriScB5ZL7cXmNmq/Ib2eEVeq4Uw+eo0N/D8cpeFP6vgA8AH8r+e2u2eHPMxlXs41wMuXQ4w/eh2McEin9cRoq/2Mel2McEJl+uTMYxya7TuOSZcqXwKFcK01j2oWhmIFmR3wa72OMfjZmd6+5P5DuOXDCzP7r7RWZ2P/Bad09n1z/k7q/Mc3iDCv2zZmank7kD2cYh685398fyGNaIzGwJsAR4cbLNNDOzHwLrOPjucGe4+3uPhbgKPVcOp9jjH0l2n95J5vTFotynSTou7ydzd5ai3KdJOiZFnSuTcUxAuVKIlCuFSblSmMby3b4oCkg2+m2wk+5+bT5jG4tijx/AzEaarWbAXe7+ulzHkw9mtpvM1fYvAk50997s+gZ3r89rcFmF/lkzsy8DdWTOQ58GfNDd9w0U5/IbXUZ2ptlfmtk/ABcDq4G/ALa7+z/nN7rgmNmD7v6qsa7PlVzFVei5cjjFHj+MeFz5MlAKvAL4BMW5T0U9LqMc628E3gZcS3HuU1GPCUy+XJmkYwLKlbxTrhQe5Uphmsh3+7yeqjAOZ7v7q4et+39m9kBeohm/Yo8foAt4jMwHa6DqaGQuvHWsOC/7/3VkCiCYWWV2uVAU+met3t1fA2Bmy4DbsxcnLySx7P+XsX+m2TfN7KE8xnQ03GFmd3LwReHvyGdQHBxXDfBq4H8D7qfQc+Vwij1+OPi4shx4Cpjr7vdmtym2fSr2cRnpWL+czKzRXw3Zrpj2qdjHBCZfrkzGMQHlSiFQrhQe5UphOuLv9sVSQGows2+SqfINfNG5mPzfBnusij1+gOeAy9y9fehKM7s7T/HknLu/NMK6LuB3eQhnNIX+WYuYWczd4+7+jJldBvyIzF22CsVpZvYDMneGKAF6s+tL8xdS8Nz9i2b2KJlbdnYC24HvA4sKIK5byVysvgbYBpQehTsdFnquHE6xxw/DjitmdiNQTub2uK+nOPep2MfloGN9dlzeYWZvpzj3qdjHBCZfrky6MQHlSoFQrhQe5UphOuLv9kVxChtQkLfBHo9JEP8soNnd48PWR3R3pMJSyJ81MzsXaHT3vUPWhYF3uPtP8xfZfmY2f8jiTndPZGeavcrdC6lYOCHZ0wlnkLltZ8GcTmhmD3LgX0IATgPWj/DXnon2VbC5MhaTIP6DjivZffoLMr+MFd0+QXGPyyGO9fVkirpFt09Q3GMCkzNXJuOYZNcrV/JIuVJ4lCuFaSLf7YumgCQiIsExs/uHnU54M/BJ4D/zXED6BJnps7e5+33Zdb9z90vzFZOIiIiIiMBIF08SmbTM7DIzczM7Jd+xiORZxMxiAO7+DJlrPv07eT6d0N1vBK4mcyrhT83sLfmMR0REREREMlRAkmPNlcBDwLvyHYhInn2czLRbANy9FXgLmTti5FX2GllfB95L5vS6p/MckoiIiIjIMU+nsI2Rmf0L8G4y1wtJAx9298cn+JpvAU5z91UBxNfl7pUTfZ3JLHsdm+eB1wJ3uPsp2VsYfo3M3ae2kimqfs/df2FmZ5O5zWQl0AT8H3fflZ/oJwczSwHryFzA/zngKnfvmeBr/h8yd3f72MQjFBERERERkZFoBtIYmNkFwJuA5e6+DLiEzJ2BxtJ21DvdufsdQRSPZMzeCtzl7i8ALWa2HLgcWEDmTlR/TeZiaJhZFPhv4O3ufjbwPeCGfAQ9yfS6+5nuvgSIAx8Za8PsxbZFCp6Zpczsz0P+rRxH2wvN7M4J9n9f9uKUR9L2sP2b2aVm1mBmz5nZRjP70pFFmluTeVzMrM7M7jSzp81sg5n99sgjzQ8z+xczW29mz2TH57yAXvdV2df9s5mVBfGaI/Qx4c9HsTha4zRRZtaV7xgKwZCfc8+a2e1mVn6Ibf/dzP7vUY7ne2a218yePZr9FLJCGhMzm2dmf8oev9ebWd5nnedLgY1LqZk9kT2GrzezzxytvoIwanFDDjALaHL3fgB3bwIws0YyMx+asr8UfsndLzSzfwdmkylMNJnZCWTucLQ+2+4+4B/JFC3qgX8hc4rGIndPZz/Az5O5nfbxwP8AxwE9wN+4+0YzWwj8hMwY3nXU34HJ4UrgK9nHP80uR4Hb3T0N7DazP2WfPxlYAtxtZgBhQLOPgvUgmYslY2a/BuYBpcBX3f2W7PouMrPA3gD8o5n1A18FKoB+MrfMBJhtZncBJwD/z90/lcsdERmm193PzEfHR7vQamZLyMzaXJE9FkXIXLOqGEzacQE+C9zt7l/N9rfsKPcXqGF/qOs3s+lALKCXfw+Z389uDej1jllHeZwkGIM/58zsx2T+UHdjHuO5jcwx4wd5jCHfCmlMksA/uvtaM6sC1pjZ3e6+IU/x5FMhjUs/cJG7d2UnMTxkmRvIPJaneA5JM5DG5g/APDN7wcy+bmavGUObs4G/cvd3kylWXAGDt8yb7e5rBjZ093YyBaSB130z8Ht3TwC3AH+fnQXzf4GvZ7f5KvANdz8H2D3hPZzkzGwacBHwnWzh75PAO9l/m/CDmpC5bfiZ2X9L3f31uYl28st+6byUzOlskCmwnk2moHpNdrwgUyh61t3PA54AfgZc6+5nkJkJ2Jvd7kwy47kUeKeZzcvNnkw+I8zSWJDvmCYLM2s0sy+Y2aP/f3tnHmx1Wcbxz1fBXC7giOYQzaSWOyplMhpmGGjM1GSmRiYllS1mpTmm5YIULpVjljqmKTM4LiSClOKCDIogKJLChXBPcMuRNDdI3Hj643l+ce655557L1zuOefyfGZ+c9/z3ve3vO/z295n+4UHz6ckzZD0T0ml3nh9JU0LT5Ir5aG2SPpTrNfCOhXbHSvpfuCYkvrNJF0r6bz4fXjs+5GwtjVF/Ui5J9H9uFdmNU4HzjezxwHM7P3IV9Ww9BC5DABeKH5EYvxGopWhzsz+JWl/SfdJejhkMkBSL0kLJQ0DkHShpIoewpJOwN+/xsYEAUk/j/WXFPKStFOM9TVya/QNkkZImifpKUlDot0QSfMlLYq/u1fY5zZyr4uF0e6IjTFgNWKjyCn+3+51KKlJ0qy4Vpa2NbaVZLyJMhf4BICkb8V4NEu6rryhpO/FmDVLmqrwxpB0TFwTzZLmRN3ecm+JxbHNXds6ADObA/xn43SvIampTMzsJTN7JMpv4ekkBm6kvjYStZaLmVnhRdk7lvrNM2RmuXRgwT1QhgG/whU2Y4AVwPbx/08Ds6M8Dji3ZN2BwKNRPhl/+Sa2cXmUvwFcGeVpwGF47p23gcUly2PR5lWgd5T7AqtqPUb1vAA/AK4qq7sPOAeYjitTd8QfckfjFrWngYOibW9g71r3o9EXPIdYcS5fBmwR9eNwJWoz8AZwYNS/D2we5X2AeRW2OQa4uuT3ncDBte5roy7rey8p5JRLq/N8MTAq6lcAJ0b5EmAJ0Af3MF0Z9cOANbgH6ubATDyUFmC7YqyB2cC+Jds9vWT/s4EDgUnAWVG3PTAH2CZ+nwGMxb3+ngd2xRXnk4HpVfr2CLBfrcc45dKqb18AXgfuxb2aP1Lr8e6kbJpCJk/ihrLP4c/d+cAO0WYUnqMQ/GuRj+HvSouIZ0kb255YIqvDccOc8Of+dOAQ3GP8ffw5sxnwMB66LuAI4K+xfl+gV5RHAFNLzo/pUb4AGB3lbaNP29R6jBtATh25DnsBfUuunadZl891VTUZ13rsulFGxTj0Av4GnBhyeIJ1c5binjUOOC3K/Uu2cR5uvAY39A0szuf4exlwXJS3ALZq55h2wo2BNR+flEkruTxXXFOb2lJvcsHfIRYDq4Df1np8qi0ZwtZBzOwD/OVvtqSlwPH4y0bhxbVl2SqrS9Z9UdKrcpfyUbgyo5xbgQslbYd7L92De1+8bm273NevZrL+OBYozzc1FdgTt9r+A38hWgC8YWbvSjoauFRSP/zm8gdgWfcdco+kVQhJWCdH4Mq6/8pDPIvraU1ce+Avg22d8++UlD8gw3O7FLkX0nX4PQngx2Y2P2R3Lh7eORjYS9Jo4Kf4g3IB8KMSGW4qVAuVujX+LgWazC2Ab0laI6n4Kt5DZvYMgKRJwMHAFOBrkr6Pn98DgL3wSRa4d14pVwGTzayw+B8Y7efJw3K3AB4A9gCWm9lTsb/raZyQtM7SY+ViZjMk7QKMxL07F0kaZGb/rjoidYK52/7+wGfxD13chL+YVwwlN7NlYRm+DX92vNvBXR0ey6L43YQr6Z7Dx3spgKRlwCwzs3jn2yna9wOuDSuy4cqTSvv4stbly9gST0fwWAePsW7pBjm1dx2uBi6QdAj+QZuBuPGv1BO/LRnPWe+ONxZbSVoc5bnABHzeMcUiBYeZVfIIGiT3itwWH7MZUT8PmChpMnBL1D0AnCXpo8AtxX0qaZO6k4nc03UqcIqZvbn+XWto6kou8a48OO510+IZXpe5w3KS1QHkLsprS4Q+GHgW2ApX9twJHNXOZv6Cu/73K15QSomH8kN4aNr0OInelLRc0jFmdrP8ybyvmTXjJ+nXgevx+P6kCmY2rELdpeA30Rj//niY1NL4/2LcMplsXPoBr4XyaA98QlWJx/FcRweY2UJ57PbbbbRN1p/SB+pyMzsSWAkcZmZrYuI0Cfe6BBgCDDKz5ZL2xJXkQ83sPUlX4PenTTn3QTmFsnMtLRWfa1n3TC5XlJo8791pwAFm9pqkibQ0XKwuW2c+cKiki81sDa6AnWlmx5Y2kjS4wv6qsQx/7jV3Yp1GoNHlUrzo3gjcKE/ofAg+QWgIKhjqTsJDyQ9qY5V9cK+rHTuxGwEXmtlVLSpdSV4u99JzojgHxgP3mtmRsc7sNvZxlJk90Ynjahg2spzauw6Pwz2S9o9nzApaG3AryngTopKhrpoBrmAi8BUza5Z/3XYYgJn9UJ4o/YvAYkmDzexGSQuiboakE8zsni7uR0+irmQiz7EzFbjBzG6p1GYToa7kUmBmr4cxfSTu4FB3ZA6kjtGEW5welbQEtxaOw8PZ/ihpLu71UI0puMJncpU2NwGjaWmxPA74rqRm/MW9iPc+GThJ0kJ8Ap6sP9NjwjwXGG9mmVOqe7kL6BXX1nigYsK4sFyOAi6L62EmrV8ckw2n+FLe4FAegVvZr47Jws34PbDgITNbHuXhuHJhYVxTw/GQn6RzDJG0szzHzijgfjx0ZjXwhqQdcS+TakwA7gBuluccexAYKqmI8d9a0m64YnZn+ccewL01q3ERcGasW+TzObXzXWxI6lYukj6vdXkY+uAfFHhufTpZCyTtrpa5IQbjHjs7yBM3I6m3pL2j/FWgP64ku1TrvMTaYwbwHa3LMzVQ0oc7caj9gBejPKbKPn4SExEkfbIT269rulFObdEPD2d7T9KhwMcqEVh8zgAAAxlJREFUtNlQGfdEZuGekv0B5NEO5fQBXgrlwv8N05I+bmYLzGws8AqeE3YX4JkwxN5KfBAl6RQ1kUnclybgKVFqmVy9XqmVXHYo7o/yr4WOwN8D6pL0QOoA5gmvP1PhX3OB3Sq0H1eh7mXKxtvMJuJazOL3FMqSOsfEbGSF7S0nPjkflIdnJR2kkndSsnEws6YKde/QxqSrvL2ZLaS1h9JEWl5HX9rQ40xa8TPgZWA/3PCwpuR/pR4WAq41s19247HVI6VeXAB3mVmHPxmPuzz/Brfcz8G/LLhW0iLckPAM7oVaFTP7vTwE9zr8JWcMMEnSh6LJ2Wb2pDz86nZJr+BKkUFVtrlE0imxna1xS93tnehbLemxcsEVt5dLKkLrr4n7ZaPQhBsHtsXTAzyNh+z9mbJQckkv43IYbmbPS7oc994+vr2dmNndck/JB0K/swo33HU0zPZ3uEHxVDzVQCXG4yHvS2KytgL/cllPoFvkVIUbgNsk/R3PFdJqglVFxis3YL8NTYQSng/cJ+kDPLxvTFmzc/Cw82dxT/w+UX9RKA2FT66bgV8AoyW9h4cP/rqtfcvDfYcB20t6Ac8RO6GLutaw1FAmQ4FvAktLnodnmtkdXdKxBqeGchmAP1s2x5/hk81sepd1rIspEs8lSZIkCZJWlSvuJF0CvGBmF0v6Np4gVfIcSKcVSjtJe+GJCIea2cqw3PQxs2e7uRtJkiRJkiRJknQxGcKWJEmStMcVwPGSHsS9LsvzugBgZo8CZwN3y0MSZ+JWlSRJkiRJkiRJGpz0QEqSJEmSpAXhaXZyWfU8MzupFseTOCmXtpE0Ddi5rPoMM5tRqX1SG1JOPY/IFzOrwr+Gm9mr3X08ScqkXukpckkFUpIkSZIkSZIkSZIkSVKVDGFLkiRJkiRJkiRJkiRJqpIKpCRJkiRJkiRJkiRJkqQqqUBKkiRJkiRJkiRJkiRJqpIKpCRJkiRJkiRJkiRJkqQqqUBKkiRJkiRJkiRJkiRJqpIKpCRJkiRJkiRJkiRJkqQqqUBKkiRJkiRJkiRJkiRJqvI/v2unEu0XhvUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1440x576 with 121 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "attributes = ['Survived', 'Age', 'Parch', 'Fare', 'Embarked_C', 'Embarked_S', 'Sex_female', 'Sex_male', 'Pclass_1', 'Pclass_2', 'Pclass_3' ]\n",
    "scatter_matrix(X_train_df[attributes],figsize=(20,8))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x576 with 9 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "scatter_matrix(X_train_df[['Survived','Sex_female', 'Sex_male']],figsize=(20,8))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_final_df = X_train_df.drop(['Survived'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>22.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>38.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>26.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>35.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>35.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Age  SibSp  Parch     Fare  Embarked_C  Embarked_Q  Embarked_S  \\\n",
       "0  22.0    1.0    0.0   7.2500         0.0         0.0         1.0   \n",
       "1  38.0    1.0    0.0  71.2833         1.0         0.0         0.0   \n",
       "2  26.0    0.0    0.0   7.9250         0.0         0.0         1.0   \n",
       "3  35.0    1.0    0.0  53.1000         0.0         0.0         1.0   \n",
       "4  35.0    0.0    0.0   8.0500         0.0         0.0         1.0   \n",
       "\n",
       "   Sex_female  Sex_male  Pclass_1  Pclass_2  Pclass_3  \n",
       "0         0.0       1.0       0.0       0.0       1.0  \n",
       "1         1.0       0.0       1.0       0.0       0.0  \n",
       "2         1.0       0.0       0.0       0.0       1.0  \n",
       "3         1.0       0.0       1.0       0.0       0.0  \n",
       "4         0.0       1.0       0.0       0.0       1.0  "
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_final_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_final = X_train_final_df.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[22.    ,  1.    ,  0.    ,  7.25  ,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [38.    ,  1.    ,  0.    , 71.2833,  1.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  1.    ,  0.    ,  0.    ],\n",
       "       [26.    ,  0.    ,  0.    ,  7.925 ,  0.    ,  0.    ,  1.    ,\n",
       "         1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [35.    ,  1.    ,  0.    , 53.1   ,  0.    ,  0.    ,  1.    ,\n",
       "         1.    ,  0.    ,  1.    ,  0.    ,  0.    ],\n",
       "       [35.    ,  0.    ,  0.    ,  8.05  ,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [28.    ,  0.    ,  0.    ,  8.4583,  0.    ,  1.    ,  0.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [54.    ,  0.    ,  0.    , 51.8625,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  1.    ,  0.    ,  0.    ],\n",
       "       [ 2.    ,  3.    ,  1.    , 21.075 ,  0.    ,  0.    ,  1.    ,\n",
       "         0.    ,  1.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [27.    ,  0.    ,  2.    , 11.1333,  0.    ,  0.    ,  1.    ,\n",
       "         1.    ,  0.    ,  0.    ,  0.    ,  1.    ],\n",
       "       [14.    ,  1.    ,  0.    , 30.0708,  1.    ,  0.    ,  0.    ,\n",
       "         1.    ,  0.    ,  0.    ,  1.    ,  0.    ]])"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_final[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train = train_data_drop_na['Survived']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [],
   "source": [
    "log_clf = LogisticRegression(random_state=42) # 采用逻辑回归分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LogisticRegression:79.42%\n",
      "LogisticRegression_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "log_name, log_score = general_algorithm(log_clf, X_train_final, y_train, X_test, verbose=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 1, 0, 1, 0, 1, 0], dtype=int64)"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log_clf.predict(X_test[:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [],
   "source": [
    "knn_clf = KNeighborsClassifier()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KNeighborsClassifier:70.19%\n",
      "KNeighborsClassifier_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "knn_name, knn_score = general_algorithm(knn_clf, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 1, 0, 0, 0, 1, 0, 1], dtype=int64)"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn_clf.predict(X_test[0:10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [],
   "source": [
    "sgd_clf = SGDClassifier(random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\00-app\\python\\python38\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SGDClassifier:68.29%\n",
      "SGDClassifier_result.csv generated!\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\00-app\\python\\python38\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "d:\\00-app\\python\\python38\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "d:\\00-app\\python\\python38\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "d:\\00-app\\python\\python38\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "d:\\00-app\\python\\python38\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "sgd_name, sgd_score = general_algorithm(sgd_clf, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [],
   "source": [
    "forest_clf = RandomForestClassifier(n_estimators=90, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RandomForestClassifier:81.67%\n",
      "RandomForestClassifier_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "forest_name, forest_score = general_algorithm(forest_clf, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [],
   "source": [
    "decision_tree = DecisionTreeClassifier(random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DecisionTreeClassifier:78.18%\n",
      "DecisionTreeClassifier_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "decision_tree_name, decision_tree_score = general_algorithm(decision_tree, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [],
   "source": [
    "svm_clf = SVC(gamma=\"auto\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SVC:72.0%\n",
      "SVC_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "svm_name, svm_score = general_algorithm(svm_clf, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [],
   "source": [
    "linear_svc = LinearSVC()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LinearSVC:71.77%\n",
      "LinearSVC_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "linear_svc_name, linear_svc_score = general_algorithm(linear_svc, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [],
   "source": [
    "gaussian_clf = GaussianNB()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GaussianNB(priors=None):78.29%\n",
      "GaussianNB(priors=None)_result.csv generated!\n"
     ]
    }
   ],
   "source": [
    "gaussian_name, gaussian_score = general_algorithm(gaussian_clf, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [],
   "source": [
    "perceptron_clf = Perceptron()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Perceptron:58.92%\n",
      "Perceptron_result.csv generated!\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\00-app\\python\\python38\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.perceptron.Perceptron'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "d:\\00-app\\python\\python38\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.perceptron.Perceptron'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "d:\\00-app\\python\\python38\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.perceptron.Perceptron'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "d:\\00-app\\python\\python38\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.perceptron.Perceptron'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "d:\\00-app\\python\\python38\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.perceptron.Perceptron'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "d:\\00-app\\python\\python38\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.perceptron.Perceptron'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "perceptron_name, perceptron_score = general_algorithm(perceptron_clf, X_train_final, y_train, X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Model</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>RandomForestClassifier</td>\n",
       "      <td>81.67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>LogisticRegression</td>\n",
       "      <td>79.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>GaussianNB(priors=None)</td>\n",
       "      <td>78.29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>DecisionTreeClassifier</td>\n",
       "      <td>78.18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SVC</td>\n",
       "      <td>72.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>LinearSVC</td>\n",
       "      <td>71.77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>KNeighborsClassifier</td>\n",
       "      <td>70.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>SGDClassifier</td>\n",
       "      <td>68.29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Perceptron</td>\n",
       "      <td>58.92</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     Model  Score\n",
       "3   RandomForestClassifier  81.67\n",
       "0       LogisticRegression  79.42\n",
       "7  GaussianNB(priors=None)  78.29\n",
       "4   DecisionTreeClassifier  78.18\n",
       "5                      SVC  72.00\n",
       "6                LinearSVC  71.77\n",
       "1     KNeighborsClassifier  70.19\n",
       "2            SGDClassifier  68.29\n",
       "8               Perceptron  58.92"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "models = pd.DataFrame({\n",
    "    'Model': [log_name, knn_name, sgd_name, forest_name, decision_tree_name, svm_name, linear_svc_name, gaussian_name, perceptron_name],\n",
    "    'Score': [log_score, knn_score, sgd_score, forest_score, decision_tree_score, svm_score, linear_svc_score, gaussian_score, perceptron_score]})\n",
    "models.sort_values(by='Score', ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## <font color='red'>答案：随机森林的精准度是9种尝试的算法里面最高的， 在没有优化数据或特征之前使用此算法最为适合。 后续需要加强的是把这次放弃的几个特征做特征工程后加入到训练数据当中，再尝试是否可以提高精准度。各种算法的预测结果都有按照kaggle官方要求的方式保存到对应算法名称的csv。</font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
